我必须检查我销售的产品(主要是游戏机和游戏)
我想看看哪些产品有哪些类别,这是我的查询:
select * From products left join products_categories on (product_id=id) ;
+------+------+------------+-------------+----------
| id | name | product_id | category_id | and more
+------+------+------------+-------------+----------
| 4 | Xbox | 4 | 2 |
| 5 | PS3 | 5 | 2 |
| 7 | BAD | NULL | NULL |
etc...
+------+------+------------+-------------+---------
这里我有一个产品(#7 - BAD),我不想看到,因为我删除了类别,
我不希望看到没有类别的产品?
答案 0 :(得分:8)
LEFT JOIN命令用于组合空匹配行 存储在相关表中为了连接这些表,连接表 从左边需要一个公共字段(通常称为外键) 表。此类联接需要使用关键字ON或USING。
示例:
SELECT *
From products
LEFT JOIN products_categories ON (product_id=id)
WHERE product_id IS NOT NULL;
或者您可以使用INNER JOIN:
JOIN或INNER JOIN命令用于组合非空匹配 存储在相关表中的行为了连接这些表, 连接表需要一个公共字段(通常称为外键) 从左边的桌子。此类联接需要使用关键字ON或USING。
示例:
SELECT * From products INNER JOIN products_categories ON (product_id=id);
现在,我建议为非活动或活动产品添加标记,这样,如果产品处于非活动状态,则无需删除产品的类别。这样,如果要重新激活它,只需将标志重置为1或您使用的任何标志。
示例:
SELECT *
FROM products
INNER JOIN products_categories ON (product_id=id)
WHERE products.is_active = 1;