2016-11-24 5 views
1

オーダーに複数の商品が含まれているテーブルのエントリを表示しようとしましたが、試した方法ではうまく動作しません。誰かが私に何が間違っているかを示すことができますか?私が試したものを複数の商品が注文されたオーダーを表示

Here's:

SELECT * 
FROM TableX 
WHERE (SELECT COUNT(Ordernumber) FROM TableX AS a WHERE a>1); 

答えて

0

一つのオプションは、のための完全なレコードを取得するためにあなたの元のテーブルにこのサブクエリに参加、その後、複数の物品を持つ注文番号を識別するために、サブクエリを使用することですこれらの一致する注文。

SELECT t1.* 
FROM TableX t1 
INNER JOIN 
(
    SELECT Ordernumber 
    FROM TableX 
    GROUP BY Ordernumber 
    HAVING COUNT(*) > 1 
) t2 
    ON t1.Ordernumber = t2.Ordernumber 

このクエリは、指定された注文内のすべての記事が一意であることを前提としています。重複した記事が発生する可能性があり、そしてあなたは、あなたが代わりに次のHAVING句を使用することができ、重複をカウントしません場合は、次の

HAVING COUNT(DISTINCT article) > 1 

別のオプション:

SELECT * 
FROM TableX 
WHERE Ordernumber IN 
(
    SELECT Ordernumber 
    FROM TableX 
    GROUP BY Ordernumber 
    HAVING COUNT(*) > 1 
) 
+0

動作しますが、かなり遅いit's:あり任意のより速い可能性? – AbsoluteBeginner

+0

私はGROUP BYクエリを使って集計を行うことはありません。もう一つの選択肢を教えてください。 –

関連する問題