Я недавно видел этот запрос, который находит все стороны, на которые клиент может пойти:
SELECT *
FROM Party
INNER JOIN Organizer on Organizer.OrganizerId = Party.OrganizerId
LEFT JOIN Client on Client.ClientID = 1
LEFT JOIN PartyRegistration on PartyRegistration.PartyId = Party.PartyId
WHERE Party.OrganizerId = 0
AND (Party.HasGuestList = 0 OR PartyRegistration.ClientId = Client.ClientId)
Я никогда раньше не видел объединения по определенному значению. Нормально ли видеть такой код SQL?
У меня мало знаний о левых соединениях, но это может относиться к любому объединению, например, как это будет:
SELECT *
FROM Party
INNER JOIN Organizer on Organizer.OrganizerId = 0
сравните с этим, поскольку результаты одинаковы:
SELECT *
FROM Party
INNER JOIN Organizer on Organizer.OrganizerId = Party.OrganizerId
WHERE Organizer.OrganizerId = 0