Не присоединяется правильно - PullRequest
0 голосов
/ 24 ноября 2018

У меня следующий запрос, который берет несколько столбцов из серии таблиц

SELECT Events.eventID, Events.eventName, Organisations.organisationName, Events.eventCrewSize, Events.eventGuestSize, Events.eventDate, Events.eventTime, Boat.boatName, Address.addressNo, Address.addressStreet, Address.addressStreetType, Address.addressSuburb, Address.addressPostCode, Address.addressState 
FROM Events, Organisations, Boat, Address 
WHERE Events.eventOrganisation = Organisations.organisationID AND Events.eventBoatID = Boat.boatID AND Events.eventAddressID = Address.addressID AND Events.eventDate >= CURDATE();

Моя проблема в том, что не все события будут иметь организацию, и вместо того, чтобы возвращать NULL для этого столбца, он простоне включает в себя никаких событий без организации.

Я попытался удалить часть организации из предложения where, которая включала пустые строки, но в качестве значения использовалась организация другого события, а не фактическое нулевое значение.

Я считаю, что это проблема объединения, но не знаю, как ее структурировать соответствующим образом.

1 Ответ

0 голосов
/ 24 ноября 2018

Вы можете попробовать использовать левое соединение

SELECT Events.eventID, Events.eventName, Organisations.organisationName, Events.eventCrewSize, Events.eventGuestSize, Events.eventDate, Events.eventTime, Boat.boatName, Address.addressNo, Address.addressStreet, Address.addressStreetType, Address.addressSuburb, Address.addressPostCode, Address.addressState 
FROM Events 
LEFT JOIN Organisations on Events.eventOrganisation = Organisations.organisationID
LEFT JOIN Boat on Events.eventBoatID = Boat.boatID
LEFT JOIN Address on Events.eventAddressID = Address.addressID
WHERE Events.eventDate >= CURDATE();

Не забудьте применить связь между вашим первичным и внешним ключами / нормализацией.Вместо этого вы можете использовать NULLIF(), чтобы избежать нулевых значений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...