首页 文章

PHP和MySQL多个类别中的一个项目

提问于
浏览
0

我尝试从 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

我想做的是:

选择在store_category中设置了category_id = php var $ category_id的所有商店

*添加为伪代码

我怎样才能做到这一点?

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

从这个表设计中我想表达两个商店都包含在这两个类别中

3 回答

  • 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

    在此示例中,我首先获得具有类别名称的所有行,然后我加入商店 . 因此,您不必查询具有类别的所有商店

    SELECT s.name
    FROM store_category AS sc
    LEFT JOIN stores AS s ON sc.store_id = c.id
    WHERE sc.category_id = 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;
    

相关问题