2017-10-10 15 views
0

私は自分のクエリを書く方法を理解しようとしています。表中のdupesを探しているすべての - 私の複雑なmySQLクエリ、検索結果、日付順、グループ順

まず:

$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

あなたはdupesの多くがあります見ることができます。
今、私はこれらの結果を注文したいと思います。

私はそれらを日付で気に入っていますが、またグループ化しました。

"23117-12"には、3つの異なる日付の3つの行があります。
私はそれらがグループ化されているように思っています..最も古い日付とASCで始まります。

したがって、最も古い日付をとり、そのグループの別の結果をリストします。
次に、あなたは次の二重引用符から日付を取って、二重引用符のこのグループを表示します。など。

私は自分の自己を説明する必要がありますか?

これはどのように可能ですか?

EDIT

予想される出力、次のようになります。 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

パーフェクト。ありがとうございました。そして私はあなたのコメントに気づくでしょう! –

関連する問題