2010-09-30 1 views
0
CREATE VIEW myView AS SELECT * 
FROM `ce_userbadges` 
WHERE ceub_userid =85; 

SELECT * 
FROM ce_badge 
LEFT JOIN myView ON ceb_id = ceub_badgeid; 

Таким образом, он должен выбрать все значки пользователя 85, а также значки, которые у них нет (следовательно, левое соединение).Это может быть написано без использования вида и вместо этого использовать подзапрос или что-то такое.

I судимое это, но это делает фильтрацию Идентификатор_пользователя после соединения

SELECT * FROM ce_userbadges 
right join ce_badge on ceub_badgeid = ceb_id 
WHERE ceub_userid = 85 

ответ

4
SELECT * FROM ce_badge 
LEFT JOIN ce_userbadges 
ON ceub_badgeid = ceb_id AND ceub_userid = 85 
1

Вы можете просто поместить код представления, где вы его используете:

SELECT * 
FROM ce_badge 
LEFT JOIN (
    SELECT * 
    FROM `ce_userbadges` 
    WHERE ceub_userid = 85 
) x ON ceb_id = ceub_badgeid; 
+0

Спасибо за ответ , это хорошее альтернативное решение –

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