2013-03-05 3 views
0

Возможно ли получить INNER JOIN запрос MySQL для достижения этого результата?MySQL `INNER JOIN` кратность одной таблицы

У меня есть таблица со стратегиями и таблица с членами. В таблице Strategy содержится идентификатор автора, который соответствует их идентификатору в таблице Member и идентификатору автора, который обновил работу существующего автора. Можно ли одновременно получить ссылку на обоих этих людей? Что-то вроде следующего, который не возвращает никаких ошибок, но и нет результатов ...

SELECT * FROM Strategies 
INNER JOIN Members AS a 
INNER JOIN Members AS b 
WHERE Strategies.ID='2' 
AND Strategies.AuthorID = a.ID 
AND Strategies.UpdateAuthorID = b.ID 

ответ

4

Используйте LEFT JOIN:

SELECT 
    s.*, 
    a.Name AS MemberName, 
    b.Name AS UpdatedMemberName 
FROM Strategies AS s 
LEFT JOIN Members AS a ON s.AuthorID = a.ID AND s.ID = 2 
LEFT JOIN Members AS b ON s.UpdateAuthorID = b.ID AND s.ID = 2 ; 

Если вы хотите, чтобы они в одном столбце использовать COALESCE:

SELECT 
    s.*, 
    COALESCE(a.Name, b.Name) AS MemberName 
FROM Strategies AS s 
LEFT JOIN Members AS a ON s.AuthorID = a.ID AND s.ID = 2 
LEFT JOIN Members AS b ON s.UpdateAuthorID = b.ID AND s.ID = 2 
+0

Мне просто нужно получить значения для моих переменных php, чтобы я мог их отображать. Итак, верхняя должна работать правильно? – SnareChops

+0

@SnareChops Оба будут работать нормально, первый даст вам два столбца один для 'AuthorId', а другой для' UpdAuthorId', но второй запрос предоставит вам только один столбец; тот, который не может быть обнулен. –

4
SELECT toD.dom_url AS ToURL, 
    fromD.dom_url AS FromUrl, 
    rvw.* 

FROM reviews AS rvw 

LEFT JOIN domain AS toD 
    ON toD.Dom_ID = rvw.rev_dom_for 

LEFT JOIN domain AS fromD 
    ON fromD.Dom_ID = rvw.rev_dom_from 

если домен является таблицей