2015-12-04 3 views
1

please look this pictureпочему левое соединение по пункту не работает

первый запрос не извлекает все строки, MemberType> 4, все MemberType просто < = 4.

Но во втором запросе есть MemberType = 5, кажется, что предложение on не работает. я не понимаю. если вы можете дать мне сигнал, я буду признателен.

+0

LEFT join возвращает все строки для первой таблицы, его просто условие вернет NULL, если они не совпадают во второй таблице. – Mihai

ответ

0

В втором запросе нет предложения WHERE, поэтому вы получаете все строки из таблицы member.

Тогда вы внешнее_соединение таблицы daili со следующим условием: когда member.membertype < = 4 и соответствующие записи счетов находятся в daili затем присоединиться к этим, в противном случае просто держать member записи с пустым daili записи.

Итак, для элемента member> 4 вы всегда являетесь внешним - присоединяетесь к пустой записи daili.

Удалить membertype <= 4 из вашего предложения ON, потому что вы не хотите, чтобы это условие соединения. Вместо этого поставьте в предложение WHERE, потому что вы хотите ограничить свой набор результатов.

1

Вы должны поместить MemberType < = 4 в предложение WHERE вместо того, чтобы иметь его в части левого соединения.

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