【发布时间】:2015-07-05 23:13:48
【问题描述】:
我有四个这样的表:
公司(名称、描述)
company_users (company_id, user_id)
用户(id,group_id)
user_profiles (user_id, fullname)
我想列出广告系列。
我的代码是这样的:
SELECT companies.*, user_profiles.fullname as company_contact
FROM companies
INNER JOIN company_users ON companies.id = company_users.company_id
INNER JOIN users ON company_users.user_id = users.id AND users.group_id=500
INNER JOIN user_profiles ON users.id = user_profiles.user_id;
当我添加新广告系列时不会出现。因为 company_id 不在 company_users 中。
我该如何解决这个问题?
注意:每个广告系列必须只有一个用户。该用户的 group_id 为 500。
谢谢
编辑:
表格:
companies
1 | Test Company | Test Desciption
2 | Test Company 2 | Test Description 2
company_users
1 | 18 | 1
2 | 19 | 1
users
18 | 500
19 | 900
user_profiles
18 | 18 | Test Contact
19 | 19 | Test User
左连接结果:
1 Test Company Test Description Test Contact
1 Test Company Test Description NULL
2 Test Company 2 Test Description 2 NULL
INNER JOIN 结果:
1 Test Company Test Description Test Contact
我需要这个:
1 Test Company Test Description Test Contact
1 Test Company 2 Test Description 2 NULL
【问题讨论】:
-
用户 LEFT JOIN 而不是 INNER JOIN 这是基本 SQL 这是很好的阅读 stackoverflow.com/questions/38549/…
-
不,这可能不简单。当我使用 LEFT 时,列出了所有用户的所有公司。我只需要列出 group_id eq 500 的公司。我更新了我的答案。添加了查询结果