2014-05-06 238 views
-1

我在SQL上有点生疏,只需要一点帮助就可以了。需要SQL查询帮助

比方说,我有应用程序,评分和管理员的表。这个想法是,每个管理员都可以标记每个应用程序的评级。评分有admin_id和application_id的外键。

对于查询,我想选择任何特定管理员尚未评级的所有应用程序。思考?

+6

是的,这似乎很好 - 什么是真正的问题? –

+0

请给出你认为你看起来像的SQL。 –

+1

请发布您的表格结构,样本数据和样本输出。 –

回答

0
SELECT ap.application_id FROM application ap,rating r,admin ad WHERE ad.admin_id=r.admin_id AND ap.application_id NOT IN (SELECT DISTINCT application_id FROM rating) AND ad.admin_id=5; 

这是否给出答案? 虽然没有尝试过,但我认为它会..

1

简单的LEFT JOIN也许?它基本上只是返回所有行,其中不存在具有特定ID的管理员的评级。

SELECT a.* 
FROM applications a 
LEFT JOIN ratings r 
    ON a.application_id = r.application_id 
AND r.admin_id = ? 
WHERE r.admin_id IS NULL 

我会写一个小提琴,但SQLfiddle又累了。

+0

这是在Navicat中测试的正确答案,但我只需要将它翻译成laravel的Eloquent语法。 – mike