2012-05-09 4 views
0

Я пытаюсь вытащить first_name из таблицы имен, но только если этот user_id находится в таблице Orders и order_num = 1, но я все равно получаю сообщение об ошибке.MYSQL JOIN with AND error

SELECT first_name 
FROM customers 
LEFT JOIN orders 
ON orders.order_id = customers.cust_id 
AND orders.order_num = 1 

но мой запрос возвращает несколько значений, вместо одного, как это игнорирование orders.order_num=1 - это мой запрос выглядит правильно, или есть что-то я делаю не так?

+1

Возможно эта диаграмма может помочь: http://stackoverflow.com/questions/4715677/difference-between-left-join-and-right-join-in-sql-server/4715847#4715847 –

ответ

2
SELECT first_name 
FROM customers 
LEFT JOIN orders 
ON orders.order_id = customers.cust_id 
WHERE orders.order_num = 1 
+0

Я был wrestli нг вокруг с часами. Я думал, что последнее предложение WHERE будет для первой таблицы? Так или иначе, это работает! – Derp

+2

Эй, @ Derp, пожалуйста, отметьте, если это решение вашей проблемы. Мотивирует людей продолжать давать отличные ответы! –

+0

Да, я думаю, есть 10-минутный timelimit - не позволит мне xD - TY WojtekT – Derp

0

Попробуйте это.

SELECT first_name 
FROM customers 
INNER JOIN orders 
ON (orders.cust_id = customers.id) 
WHERE orders.order_num = 1 
GROUP BY customers.id 

INNER JOIN будет включать в себя только запись, когда условие ON соответствует

WHERE ограничивает результаты только тогда, когда огйег_пит = 1

GROUP BY гарантирует, что вы получите только 1 результат для каждого клиента