我有2张桌子:
sellers
id|name
locations
id|seller_id|name
现在,我想获得卖家并加入位置,并在where子句中合并两个表中的属性。
初始查询为:
SELECT
sellers.id
FROM sellers
JOIN locations.seller_id = sellers.id
我必须再增加一个部分,因为我不想重复数据:
SELECT
sellers.id
FROM sellers
JOIN locations on locations.seller_id = sellers.id
WHERE (
SELECT id from locations
WHERE locations.seller_id = sellers.id
LIMIT 1
)
现在我可以执行以下操作
SELECT
sellers.id
FROM sellers
JOIN locations on locations.seller_id = sellers.id
WHERE (
SELECT id from locations
WHERE locations.seller_id = sellers.id
LIMIT 1
)
AND (
sellers.name = 'test'
OR
locations.name = 'test'
)
有什么想法吗?
已更新:
带有数据的示例:
sellers
id|name
1|test
2|test2
locations
id|seller_id|name
1|1|test3
2|2|test4
3|2|test
4|2|test
result should be
[1, 2] but with my query it is [1]
答案 0 :(得分:1)
如果您简化SQL,答案就会变得简单。
SELECT DISTINCT
sellers.*
FROM sellers
INNER JOIN locations on locations.seller_id = sellers.id
WHERE
sellers.name = 'test'
OR
locations.name = 'test'
答案 1 :(得分:1)
您可以将Group By
与Having
一起使用:
SELECT sellers.id,
sellers.name,
SUM(locations.name = 'test') AS has_test_location
FROM sellers
INNER JOIN locations on locations.seller_id = sellers.id
GROUP BY sellers.id, sellers.name
HAVING sellers.name = 'test' OR
has_test_location