2013-10-03 4 views
-1

Произошла ошибка в запросе, который я привел ниже.Зачем оставлять сообщение показывать ошибку?

SELECT * FROM employee Left JOIN bonus; 

Я выполнил это с помощью sqlfiddle в Интернете. Это показывает мне ошибку.

, а также сталкиваемся с проблемой для полного внешнего соединения.

SELECT * FROM bonus FULL OUTER JOIN employee ON employee.id=bonus.id; 
+0

Какая ошибка дает вам? – Sal00m

+0

Опубликовать скрипку sql. – Mihai

+0

Я выполнил этот запрос в Интернете. В школах W3 работает нормально. Но это sqlfiddle показывает, что «у вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с« »в строке 1: выберите * из сотрудника сотрудника, оставшегося в бонусе соединения» –

ответ

1

Вы должны указать столбец соединения при использовании ЛЕВОГО или ПРАВОВОГО соединения. Как связаны ваши таблицы Employee и Bonus? Если обе таблицы содержат столбец «EmployeeID», например, то вы могли бы сделать что-то вроде этого:

SELECT * FROM employee LEFT JOIN bonus ON employee.EmployeeId = bonus.EmployeeId 
+0

Соответствующие таблицы - это необязательная вещь, когда вы присоединяетесь к ним. – Kuzgun

+0

Ahh - Я не заметил тег mysql. На MS SQL Server использование LEFT JOIN без предложения ON даст вам ошибку. – Dan

+0

Иногда бывает :) – Kuzgun

0

Если вы не используете ON, все соединения автоматически становятся CROSS JOIN. Вы можете попробовать его с помощью CROSS JOIN. Вот MySQL документация: http://dev.mysql.com/doc/refman/5.5/en/join.html

+0

Это неверно при использовании LEFT или RIGHT. В этом случае вы должны указать предложение ON или USING, иначе вы получите сообщение об ошибке - также в MySQL (я только что протестировал его с помощью sqlfiddle: http://sqlfiddle.com/#!2/a2581/14559) – Dan

+0

@dan is использование по оговорке - это мантру для внутреннего и внешнего соединения. Если он не используется, требуется перекрестное соединение. Я правильно понимаю. –

0

За документации: http://dev.mysql.com/doc/refman/5.5/en/join.html

join_table: 
    table_reference [INNER | CROSS] JOIN table_factor [join_condition] 
    | table_reference STRAIGHT_JOIN table_factor 
    | table_reference STRAIGHT_JOIN table_factor ON conditional_expr 
    | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition 
    | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor 

В MySQL ВКЛЮЧЕНО не является обязательным для соединения, но не для левого внешнего соединения или правое внешнее соединение.

Смежные вопросы