使用类别选择MySQL

使用类别选择MySQL,mysql,Mysql,我有三张桌子: section ======= id cat === id section_id product ======= id cat_id 我想选择与某一部分匹配的所有产品。有没有一种方法可以在单个查询中完成此操作?获取与该节相关的所有数据: SELECT * FROM product INNER JOIN cat ON cat.id=product.cat_id INNER JOIN section ON section.id=cat.section_id WHERE sect

我有三张桌子:

section
=======
id

cat
===
id
section_id

product
=======
id
cat_id

我想选择与某一部分匹配的所有产品。有没有一种方法可以在单个查询中完成此操作?

获取与该节相关的所有数据:

SELECT * FROM product
INNER JOIN cat ON cat.id=product.cat_id
INNER JOIN section ON section.id=cat.section_id
WHERE section.id = 5
稍微快一点的解决方案将完全忽略截面表

SELECT * FROM product
INNER JOIN cat ON cat.id=product.cat_id
WHERE cat.section_id = 5

获取与节相关的所有数据:

SELECT * FROM product
INNER JOIN cat ON cat.id=product.cat_id
INNER JOIN section ON section.id=cat.section_id
WHERE section.id = 5
稍微快一点的解决方案将完全忽略截面表

SELECT * FROM product
INNER JOIN cat ON cat.id=product.cat_id
WHERE cat.section_id = 5

使用(id)从产品a左连接cat b on(b.id=cat_id)左连接部分中选择*

使用(id)从产品a左连接cat b on(b.id=cat_id)左连接部分中选择*

要从单个分区Id中选择所有产品:

SELECT 
    * 
FROM 
    product INNER JOIN cat ON cat.id=product.cat_id
WHERE
    cat.section_id = <section id to filter>
此外,您还可以搜索投诉两个或多个ID的所有项目,例如,使用第1、4和7节搜索项目:

SELECT 
    * 
FROM 
    product INNER JOIN cat ON cat.id=product.cat_id
WHERE
    cat.section_id in (1,4,7)
使用“其他”节字段而不是节id选择具有特定节的所有产品

SELECT 
    * 
FROM 
   product
   INNER JOIN cat ON cat.id=product.cat_id
   INNER JOIN section ON section.id=cat.section_id
WHERE
    section.<other field> = <the field value>
此外,还建议替换“*”并仅获取您真正需要的字段。这有助于仅获取所需的数据

例如,如果您只需要产品的“id”和一个名为“name”的“virtualcius”字段,那么您应该这样做:(对于第一个示例查询)

选择
product.id为productId,product.name为productName
从…起
cat.id上的产品内部连接cat=product.cat\u id
哪里
cat.section\U id=

要从单个分区Id中选择所有产品:

SELECT 
    * 
FROM 
    product INNER JOIN cat ON cat.id=product.cat_id
WHERE
    cat.section_id = <section id to filter>
此外,您还可以搜索投诉两个或多个ID的所有项目,例如,使用第1、4和7节搜索项目:

SELECT 
    * 
FROM 
    product INNER JOIN cat ON cat.id=product.cat_id
WHERE
    cat.section_id in (1,4,7)
使用“其他”节字段而不是节id选择具有特定节的所有产品

SELECT 
    * 
FROM 
   product
   INNER JOIN cat ON cat.id=product.cat_id
   INNER JOIN section ON section.id=cat.section_id
WHERE
    section.<other field> = <the field value>
此外,还建议替换“*”并仅获取您真正需要的字段。这有助于仅获取所需的数据

例如,如果您只需要产品的“id”和一个名为“name”的“virtualcius”字段,那么您应该这样做:(对于第一个示例查询)

选择
product.id为productId,product.name为productName
从…起
cat.id上的产品内部连接cat=product.cat\u id
哪里
cat.section\U id=

可能需要添加
其中section.id=5
其中5是您想要的任何节。如果您按节id进行筛选,并且不需要节数据,则无需将节表添加到查询中。您应该使用product和cat并按cat.section\u id进行筛选。可能需要添加
WHERE section.id=5
WHERE 5是您想要的节。如果您按节id进行筛选,并且不需要节数据,则无需将节表添加到查询中。您应使用产品和cat,并按cat.section\u id使用滤清器。