Разрешает ли какая-либо версия SQL такое соединение? - PullRequest
1 голос
/ 30 апреля 2011

Так что это единственный пример внешних объединений, которые мы получаем весь год, и, разумеется, это неправильно.Я прекрасно знаю, что эта команда не работает на MySQL, поэтому мой вопрос: эта команда выполняется на любой версии SQL?

Найти имя каждого сотрудника на базе Texax вместе симя и отношения любых иждивенцев, которые он / она может иметь

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE LEFT JOIN DEPENDENT
WHERE Ssn = Essn
AND Adddress LIKE ‘%TX’

Ответы [ 3 ]

3 голосов
/ 30 апреля 2011

В стандартном SQL для внешнего соединения (LEFT, RIGHT или FULL) требуется ON... или USING.... Стандартный SQL также требует одинарных кавычек - «% TX», а не «% TX». Стандартный SQL не требует от вас правильного написания имен столбцов, но в целом это хорошая идея. ; -)

Я бы не сказал, что ваш оператор SQL не будет работать ни на одной базе данных SQL. Я делал это долгое время. Я видел много, ну, крайних случаев. (Я почти уверен, что каждая база данных SQL не соответствует какой-либо части каждого стандарта SQL.)

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE
LEFT JOIN DEPENDENT ON Ssn = Essn 
WHERE Address LIKE '%TX';

Вы также можете использовать старый синтаксис, предшествующий ANSI.

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE, DEPENDENT
WHERE Ssn = Essn
AND address LIKE '%TX';

Мне кажется, что тот, кто учит вас этому, пытался обновить пример до ANSI, заменив запятую между EMPLOYEE, DEPENDENT на LEFT JOIN. Хотя я мог бы восхищаться экономией усилий, мне все равно пришлось бы давать этому человеку неудовлетворительную оценку.

1 голос
/ 30 апреля 2011

У вас есть два варианта, например:

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE
LEFT JOIN DEPENDENT on Ssn = Essn AND Adddress LIKE ‘%TX’

или

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE, DEPENDENT
WHERE Ssn = Essn AND Adddress LIKE ‘%TX’
1 голос
/ 30 апреля 2011

Не настолько, насколько я знаю.Это должно быть

SELECT Fname, Lname, Dependent_Name, Relationship
FROM EMPLOYEE 
  LEFT JOIN DEPENDENT ON Ssn = Essn
WHERE Adddress LIKE '%TX'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...