Помощь с JOIN в запросе - PullRequest
4 голосов
/ 22 мая 2011
SELECT * FROM
Table_A
LEFT JOIN Table_B
 ON (Table_A.A_ID = Table_B.A_ID)
INNER JOIN Table_C ON (Table_C.C_ID = Table_B.C_ID)
WHERE Table_A.ID = 3

Это возвращает 0 строк, в настоящее время.

Как я могу настроить это так, чтобы я всегда получал Table_A, даже если для Table_B или Table_C нет строки.Я все еще хочу сохранить ВНУТРЕННЕЕ СОЕДИНЕНИЕ между Table_B и Table_C, чтобы я никогда не получил B без C.

Ответы [ 2 ]

2 голосов
/ 22 мая 2011

Возможно, вам не придется использовать встроенный просмотр. Я сейчас не перед машиной с MySQL, поэтому я не могу проверить, но вы можете попробовать

SELECT *
FROM table_A a 
LEFT JOIN (table_B b 
    INNER JOIN table_C c
    ON b.c_id = c.c_id)
ON a.b_id = b.b_id
WHERE 
    a.a_id =3
2 голосов
/ 22 мая 2011

Подзапрос для таблицы B и таблицы C. Например,

SELECT * 
FROM Table_A 
LEFT JOIN 
    (SELECT * 
         FROM Table_B
         INNER JOIN Table_C ON (Table_C.C_ID = Table_B.C_ID)
    ) B_AND_C ON (Table_A.A_ID = B_AND_C.A_ID)
WHERE Table_A.ID = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...