加入2个表来查询缺少的条目

时间:2016-03-31 16:19:04

标签: php mysql join

我目前有两张桌子," tc_services"和" tc_users"它们都有一个" USER_ID"字段和" BILLING_ID"领域。我需要一起查询这些内容,找到任何结果......

A)" tc_services"没有" BILLING_ID"

B)" tc_users"不包含" USER_ID"这与coorelating" tc_services"

的那些相匹配

我正在尝试将JOIN查询语句放在一起,如下所示,但到目前为止还无法解决。任何帮助将不胜感激!

SELECT *
FROM tc_services AS services
JOIN tc_users AS users
WHERE services.USER_ID NOT IN users.USER_ID AND services.BILLING_ID = '';

Users

Services

2 个答案:

答案 0 :(得分:0)

看到你的评论后的第二次编辑:

只做

SELECT 
*
FROM tc_services 
WHERE tc_services.billing_id IS NULL AND
tc_services.user_id NOT IN (SELECT user_id FROM tc_users)

不需要加入

编辑: 在重新阅读您的问题后,您可能需要“LEFT JOIN”

看到这张图片:http://i.stack.imgur.com/66zgg.png

所以你的查询看起来像

SELECT 
* 
FROM tc_users u
LEFT JOIN tc_services s ON a.user_id = s.user_id
WHERE s.billing_id IS NULL

可以为您提供没有结算ID的用户列表。

然后第二个问题类似。

原始答案: 听起来你可能想要使用'Union'而不是'Join'

查看以下相关答案:What is the difference between JOIN and UNION?

答案 1 :(得分:0)

类似的东西:

SELECT SERVICE_ID, COUNT(users.USER_ID)
FROM tc_services AS services
LEFT JOIN tc_users AS users ON services.USER_ID = users.USER_ID
WHERE services.BILLING_ID = ''
GROUP BY services.SERVICE_ID HAVING COUNT(users.USER_ID) = 0