我一直在努力解决这个问题。靠在墙上。我知道这很容易。
我想在参考表上选择符合多个条件的项目。这是一个可以帮助说明问题的示例模式
tblCars
------------
CarID
CarName
tblCarColors
------------
ColorID
Color
tblCarColorXRef
------------
ID
CarID
ColorID
基本上,我想找到我正在搜索的具有多种颜色的汽车。继续这个例子。让我们说在车牌桌上的丰田是多色的..黑色和黄色
丰田的CarID将是1
黑色的ColorID为1,黄色为2
我需要找到tblCarColorXRef表中与1 AND 2匹配的所有汽车。必须是'和'。我不想找到黑色的汽车或黄色的汽车,而是包含黄色和黑色的汽车。
问题是,我可以搜索WHERE ColorID = 1 AND ColorID = 2.这永远不会是真的,所以这就是头部撞击开始的地方。我需要用其他表中的其他条件包装此查询,我接近HAVING和COUNT但是,这不一定准确或正确。
旁注...汽车可以在XRef表中使用1种或多种颜色。
答案 0 :(得分:0)
你可以试试这个。
select carid
from tblCarColorXRef
where colorid in (1,2)
group by carid
having count(colorid = 2);
如果汽车颜色组合不是唯一的,您可以使用count(disinct colorid) = 2
。
答案 1 :(得分:0)
我对SQL有点生疏,所以我可能会忽略某些东西(例如语法错误或逻辑错误),但这可能会帮助您入门。这就是我要尝试的:
选择那些在CarID
1的同一个表中至少有一个实例的ColorID
,以及ColorID
2在同一个表中的一个实例。
SELECT a.CarID
FROM tblCarColorXRef a
WHERE
(
SELECT COUNT(1) AS carsWithColor1
FROM tblCarColorXRef b
WHERE b.CarID = a.CarID AND b.ColorID = 1
LIMIT 1
) > 1
AND
(
SELECT COUNT(1) AS carsWithColor2
FROM tblCarColorXRef b
WHERE b.CarID = a.CarID AND b.ColorID = 2
LIMIT 1
) > 1
答案 2 :(得分:0)
我会建议其他一些事情。