2017-10-10 94 views
0

我试图找出如何编写我的查询。复杂的mySQL查询,找到愚蠢的,按日期和按组排序

首先i'm寻找一个表愚弄的:

$query = "SELECT datum, element_skanning.objekt_element 
      FROM element_skanning 
      INNER JOIN (SELECT objekt_element 
         FROM element_skanning 
         GROUP BY objekt_element 
         HAVING COUNT(id) > 1) dup 
         ON element_skanning.objekt_element = dup.objekt_element;         
      "; 

while($row = $stmt->fetch()){ 
    echo "<tr>"; 
     echo "<td>".$row['objekt_element']."</td>"; 
     echo "<td>".$row['datum']."</td>"; 
    echo "</tr>"; 
} 

结果是这样的: enter image description here

你可以看到有很多是的受骗者。
现在我想命令这些结果。

我喜欢他们的日期..但也分组。

“23117-12”有三行,有三个不同的日期。
我喜欢他们分组..从最早的日期和ASC开始。

因此,采取最古老的日期,并列出该组的其他结果。
然后,你从下一个愚蠢的日期,列出这组愚蠢。等等..

我需要解释我的自我更好吗?

这怎么可能?

编辑

预计产出将是: enter image description here

+0

分享您预期的输出? – KMS

+0

@KMS它更有意义吗? –

+0

我有一个解决方案,首先得到所有的困惑。然后做一个循环,并获取所有的愚蠢,并列出他们的愚弄..它正在工作..但它并不快;) –

回答

2

单纯为了选择每objekt_element沿最小datum用它来排序:

SELECT es.datum, es.objekt_element 
FROM element_skanning es 
INNER JOIN 
(
    SELECT objekt_element, MIN(datum) AS min_datum 
    FROM element_skanning 
    GROUP BY objekt_element 
    HAVING COUNT(*) > 1 
) dup ON es.objekt_element = dup.objekt_element 
ORDER BY dup.min_datum, es.objekt_element, es.datum; 
+0

完美。谢谢。我会注意你的评论! –