SELECT COUNT(*) as snitch_count
FROM snitchings
JOIN pimps ON pimps.pimp_id=snitchings.pimp_id
JOIN prostitutes ON prostitutes.prostitute_id=snitchings.prostitute_id
WHERE snitchings.case_id=4538;
这就是我所拥有的并且它运行但它似乎不正确(表存在但是没有测试/虚拟数据,所以我不能完全知道)。我相信上面的查询将返回皮条客和妓女的调查总数,作为一对,对于那个特定情况(他们是巨大的情况)。但是我需要查询来返回皮条客或妓女的总金额。如何修复该查询以执行此操作?
免责声明:我可能已经厌倦了几个小时的编码,请原谅我,如果我的语法或解释有点不稳定
答案 0 :(得分:1)
不,您的查询会在具有有效pimp_id
和有效prostitute_id
的小贴士中找到行。
您确定需要加入吗?表snitchings
可以在prostitute_id
或pimp_id
中包含无效值吗?否则,这将起作用:
SELECT COUNT(*) as snitch_count
FROM snitchings
WHERE snitches.prostitute_id IS NOT NULL OR snitches.pimp_id IS NOT NULL
如果你确实需要加入,而且两者都是排他性的(或者是一个小偷是妓女还是皮条客),这应该有效:
SELECT COUNT(*) as snitch_count
FROM snitchings
LEFT JOIN pimps ON pimps.pimp_id=snitches.pimp_id
LEFT JOIN prostitutes ON prostitutes.prostitute_id=snitches.prostitute_id
WHERE snitchings.case_id=4538 AND
(pimps.pimp_id IS NOT NULL OR prostitutes.prostitute_id IS NOT NULL)
否则,你需要单独计算它们(但如果你真的想要,你可以使用UNION和SUM:
SELECT COUNT(*) as snitch_count
FROM snitchings
JOIN pimps ON pimps.pimp_id=snitches.pimp_id
WHERE snitchings.case_id=4538;
SELECT COUNT(*) as snitch_count
FROM snitchings
JOIN prostitutes ON prostitutes.prostitute_id=snitches.prostitute_id
WHERE snitchings.case_id=4538;