2013-02-28 4 views
0

Я пытаюсь получить информацию из трех таблиц в одном запросе. Я не знаю, возможно ли это сделать ... то, что я пробовал до сих пор, не сработало, но я также не настолько разбираюсь в SQL.Показать строку или NULL в запросе SQL

У меня есть три таблицы: registration, который содержит информацию о регистрации, experience, которое имеет выбор событий для клиента (если они выбрали ужин, обед, один день и т.д.), и additionalInfo, который содержит дополнительную информацию о событии таких как их выбор для конкретных семинаров во время мероприятия. registration и experience всегда будут иметь значения, но additionalInfo не будет гарантированно иметь значения. То, что я хочу получить, заключается в одном запросе, чтобы получить регистрацию и выбор событий, а если есть что-то в additionalInfo, чтобы получить это или вернуть NULL.

Я пытаюсь запрос:

SELECT registration.firstName, registration.lastName, registration.phone, experience.options, additionalInfo.workshops 
FROM registration, experience, additionalInfo 
WHERE registration.identifier = experience.identifier 
AND experience.paid = 'Yes' 
AND registration.eventName = 'march2013' 
AND additionalInfo.identifier = registration.identifier 
ORDER BY registration.lastName ASC 

Этот запрос возвращает только значение, где additionalInfo.identifier существует, но, как я сказал, это не гарантируется существование.

+0

вопроса уже были дан ответ, но я могу только добавить, что «ASC», как правило, не требуется, это стандартное поведение ANSI для упорядочения. Поэтому «ORDER BY registeration.lastName» будет достаточно. Как правило, вы явно используете ASC, когда заказываете несколько направлений в нескольких полях. – Trent

ответ

5

использование LEFT JOIN

SELECT registration.firstName, 
     registration.lastName, 
     registration.phone, 
     experience.options, 
     additionalInfo.workshops 
FROM registration 
     INNER JOIN experience 
      ON registration.identifier = experience.identifier 
     LEFT JOIN additionalInfo 
      ON additionalInfo.identifier = registration.identifier 
WHERE experience.paid = 'Yes' AND 
     registration.eventName = 'march2013' 
ORDER BY registration.lastName ASC 

Для дальнейшего получить больше знаний о присоединяется, любезно перейдите по ссылке ниже:

0

Помимо использования Left Регистрация

Вы также может проверить, база ResultSet возвращается имеет

resultset.eof

Я всегда использую это, чтобы проверить, если база данных возвращается ничего

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