SQL:在一个复杂的查询

时间:2015-09-30 12:23:54

标签: mysql sql

我有一个非常复杂的查询:

$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。

我确实重写了几次,我想这就是为什么我不能写查询。
我希望你能理解我想要的东西吗?!
怎么做?

1 个答案:

答案 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;