我尝试从stores
表格中选择可属于多个类别的所有项目
这是我的表结构:
stores
表
id
name
categories
表
id
name
store_category
表
store_id
category_id
我已经尝试过以下查询,但它并没有像我想的那样工作:
SELECT * FROM (stores JOIN store_category ON stores.id = store_category.store_id) JOIN categories ON store_category.category_id = categories.id
我想做的是:
选择
中设置了category_id = php var $ category_id的所有stores
store_category
*添加为伪代码
我该怎么做?
PS:填充表的示例
`stores`
id | name
1 | amazon
1 | aliexpress
`categories`
id | name
1 | smartphones
2 | fashion
`store_category`
store_id | category_id
1 | 1
1 | 2
2 | 1
2 | 2
从这个表格设计中我想表达两个商店都包含在两个类别中
答案 0 :(得分:1)
如果您想选择属于名称为“some_category”的类别的所有商店,那么您可以尝试这样做:
SELECT aa.id, aa.name
FROM stores AS aa
INNER JOIN store_category AS bb
ON aa.id = bb.store_id
INNER JOIN category AS cc
ON bb.category_id = cc.id
WHERE cc.name = 'some_category';
答案 1 :(得分:1)
在此示例中,我首先获得具有类别名称的所有行,然后我加入商店。因此,您不必查询具有类别的所有商店
SELECT s.name
FROM store_category AS sc
LEFT JOIN stores AS s ON sc.store_id = c.id
WHERE sc.category_id = 2;
没有测试。如果它适合你,请现在就告诉我。
答案 2 :(得分:0)
你必须这样做:
SELECT table1.*, table2.*, table3.* from table1, table2, table3
where table1.id=table2.id and table2.id=table3.id and
table3.id=table1.id;