2017-10-10 113 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

完美。謝謝。我會注意你的評論! –