我有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数据库。
答案 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;