我有一个非常复杂的查询:
$query = "SELECT * FROM element_skanning yt1
JOIN (SELECT objekt_nr, element_nr, vart
FROM element_skanning
GROUP BY objekt_nr, element_nr, vart
HAVING count(*) > 1)
yt2 ON (yt2.objekt_nr=yt1.objekt_nr AND yt2.element_nr=yt1.element_nr AND yt2.vart=yt1.vart)
ORDER BY 2";
这就是我的数据库的样子:
id objekt_nr element_nr vart
-----------------------------------------
1 1 1 Blå
2 1 1 Blå
3 1 1 Rosa
4 1 1 Kont
5 2 1 Rosa
6 2 2 Blå
我的激动查询会给我结果:1& 2因为我使用了三个输入。
现在我想搜索第三个骗局。 Id:3
我怎样才能得到id:1,2,3但不是4,5和6的结果?
检查应该是否有一行具有相同的obj_nr& el_nr,但“blå”或“Rosa”“vart”之前。
所以,Id 3将是一个骗局,因为id:1& 2.
Id:2,因为1& 3.
Id:1,因为2& 3。
我确实重写了几次,我想这就是为什么我不能写查询。
我希望你能理解我想要的东西吗?!
怎么做?
答案 0 :(得分:1)
如果我理解正确:
SELECT *
FROM element_skanning yt1 JOIN
(SELECT objekt_nr, element_nr
FROM element_skanning
WHERE vart IN ('blå', 'Rosa')
GROUP BY objekt_nr, element_nr
HAVING count(*) > 1
) yt2
ON yt2.objekt_nr = yt1.objekt_nr AND
yt2.element_nr = yt1.element_nr
WHERE vart IN ('blå', 'Rosa')
ORDER BY 2;