我必须完成的任务是:选择Titre
哪个NumCritere
等于1但不等于2。
有两个表:Biens [ RefBien, Titre ]
,例如:
RefBien 1 Titre 1 ,
RefBien 2 Titre 2 ,
RefBien 3 Titre 3 ,
EvaluationsBiens [ NumCritere#, RefBien# ]
,例如:
Num 1 Refbien 1,
Num 1 Refbien 2,
Num 1 Refbien 3,
Num 2 Refbien 1,
Num 2 Refbien 3,
NUM 3 Refbien 1,
我试过了:
SELECT NumCritere, Titre
FROM evaluationsbiens
JOIN biens ON evaluationsbiens.RefBien = biens.RefBien
where NumCritere ="1"
and NumCritere<>"2";
我得到titre
行的所有NumCritere=1
行。
你能告诉我我的代码有什么问题吗?或者你有一种不同的方式来做它?
答案 0 :(得分:0)
如果我理解正确,您希望返回与Titre
为1的任何记录相关联的NumCritere
,但如果它还与NumCritere
的记录相关联,则返回
在这种情况下,这应该有效:
SELECT Titre
FROM evaluationsbiens
JOIN biens ON evaluationsbiens.RefBien = biens.RefBien
WHERE NumCritere = 1
AND evaluationsbiens.RefBien NOT IN (SELECT RefBien FROM evaluationsbiens WHERE NumCritere = 2)
答案 1 :(得分:0)
您可以两次加入桌子。一次加入1,然后将加入保留为2,并将结果限制为左连接的不匹配。
SELECT *
FROM biens
JOIN evaluationsbiens as e1 ON biens.RefBien = e1.RefBien AND e1.numCritere = 1
LEFT JOIN evaluationsbiens as e2 ON biens.RefBien = e2.RefBien and e2.numCritere = 2
WHERE e2.RefBien is NULL;