我的查询中的mysql错误

fre*_*red 6 mysql database

我必须检查我销售的产品(主要是游戏机和游戏)

我想看看哪些产品有哪些类别,这是我的查询:

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...
+------+------+------------+-------------+---------
Run Code Online (Sandbox Code Playgroud)

在这里,我有一个产品(#7 - BAD),我不想看到,因为我删除了类别,

我不希望看到没有类别的产品?

Boo*_*eus 8

LEFT JOIN命令用于组合存储在相关表中的空匹配行.为了连接这些表,连接表需要左表中的公共字段(通常称为外键).此类连接需要关键字ON或USING.

例:

SELECT * 
From products 
LEFT JOIN products_categories ON (product_id=id) 
WHERE product_id IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)

或者您可以使用INNER JOIN:

JOIN或INNER JOIN命令用于组合存储在相关表中的非空匹配行为了连接这些表,连接表需要左表中的公共字段(通常称为外键).此类连接需要关键字ON或USING.

例:

SELECT * From products INNER JOIN products_categories ON (product_id=id);
Run Code Online (Sandbox Code Playgroud)

现在,我建议为非活动或活动产品添加标记,这样您就不需要删除产品的类别(如果它处于非活动状态).这样,如果要重新激活它,只需将标志恢复为1或您使用的任何标志.

例:

SELECT * 
FROM products 
INNER JOIN products_categories ON (product_id=id) 
WHERE products.is_active = 1;
Run Code Online (Sandbox Code Playgroud)