2013-11-19 4 views
0

У меня есть таблица под названием 'гости' с этими столбцами:оставил присоединение таблицу к себе с WHERE

  • guest_id
  • wedding_id
  • Fname
  • LName
  • inviter_id

Мне нужно выбрать все го от определенного wedding_id и слева присоединиться к фактическому приглашающему fname и lname вместо inviter_id (что соответствует идентификатору гостя).

Я получил это далеко:

SELECT u.fname fname, u.lname lname, r.fname inviter_f, r.lname inviter_l 
FROM guests u LEFT JOIN guests r ON u.inviter_id = r.guest_id 

только часть головоломки, что я недостающей добавления:

where wedding_id=10 

(выбрать результаты только для конкретной свадьбы ID).

После редактирования: Окончательный запрос: ВЫБОР u.fname FName, u.lname LName, r.fname inviter_f, r.lname inviter_l от гостей у LEFT JOIN гости г на u.inviter_id = r.guest_id где u.wedding_id = 10

теперь следить за вопрос:

как вернуть пустые значения «», где нет inviter_id (установлен 0), при выполнении текущего запроса он возвращает его как NULL. (Inviter_f и inviter_l возвращает NULL)

+2

Что происходит, когда вы добавляете где u.wedding_id = 10? – Gayathri

+0

Вам, вероятно, нужно сказать, где u.wedding_id = 10 или r.wedding_id = 10 – vogomatix

+0

Я люблю тебя, Гаатри! Я попытался добавить его внутри запроса, а не просто добавить его в конец, если он. ОНО РАБОТАЕТ!!! ahhhhhh :) вот окончательный запрос: SELECT u.fname fname, u.lname lname, r.fname inviter_f, r.lname inviter_l FROM гости u LEFT JOIN гости r ON u.inviter_id = r.guest_id где u .wedding_id = 10 –

ответ

4

Попробуйте этот запрос:

SELECT u.fname fname, u.lname lname, r.fname inviter_f, r.lname inviter_l FROM guests u LEFT JOIN guests r ON u.inviter_id = r.guest_id WHERE u.wedding_id = 10 
+0

Это работает! благодаря! следующий вопрос: как вернуть пустое значение '' вместо NULL inviter_f и inviter_l? спасибо! –

+0

SELECT u.fname fname, u.lname lname, IF (r.fname IS NULL, '', r.fname) inviter_f, IF (r.lname IS NULL, '', r.lname) inviter_l FROM гости u LEFT JOIN гости r ON u.inviter_id = r.guest_id WHERE u.wedding_id = 10 –

0
FROM guests u LEFT JOIN guests r ON u.inviter_id = r.guest_id and r.wedding_id = u.wedding_id where u.wedding_id = 10; 
+0

Вы не можете поставить 'WHERE' перед' JOIN'. – Barmar

+0

Я пробовал это, кажется, что вы не можете положить где-нибудь, кроме конца запроса ... но спасибо :) –

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