与先前的SELECT语句相比,从MySQL数据库中选择剩余项目

时间:2013-12-31 16:44:40

标签: php mysql sql

我有2个表我正在尝试从2个SELECT语句中提取数据。第一个是完美无缺的,但我无法弄清楚第二个需要什么陈述。

我对第一个的SELECT语句如下:

SELECT * 
from prodCat 
LEFT JOIN cat ON cat.catID = prodCat.catID 
WHERE prodCat.prodID = $prodEdit

然后我使用while循环列出产品的类别。但是,在此之下,我想填充一个选择框,其中包含未归属于产品的类别。我尝试了以下方法:

SELECT * 
from prodCat 
LEFT JOIN cat ON cat.catID = prodCat.catID 
WHERE prodCat.prodID != $prodEdit

但那没用。有谁知道我可以尝试做到这一点?

我正在使用PHP访问MySQL数据库。

2 个答案:

答案 0 :(得分:3)

这个查询应该起作用:

SELECT * FROM cat WHERE catID NOT IN (SELECT DISTINCT catID FROM prodCat)

首先我们列出prodCat中的所有类别ID(这是右边的子请求),然后我们选择ID不在第一个列表中的所有类别。

答案 1 :(得分:0)

您可能最好运行1个查询以返回所有类别的结果,确定类别是否关联(也按该值排序)。在PHP中迭代1个结果集以加载两个选择框。

SELECT cat.*, IF(prodCat.catID IS NULL,'No','Yes') AS related
FROM cat
LEFT JOIN prodCAT
  ON cat.catID = prodCat.catID
    AND prodCat.prodID = $prodEdit
ORDER BY related DESC;