我的查询中的mysql错误

时间:2011-12-18 17:55:02

标签: 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...
+------+------+------------+-------------+---------

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

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

1 个答案:

答案 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;