2012-05-02 7 views
2

私は以下の表を持っており、idに基づいて行をグループ化しようとしています。私は型が同じid(a19)に対してSとAを含むすべてのケースを返すが、SまたはAが存在しないインスタンス(a22 & a33)は返さない。アクセス条件別に行間をグループ化する

これを行う最も簡単な方法は何ですか?ここで

+---+----+--------------+ 
|id |type| text  | 
+---+----+--------------+ 
a19 S  S1 
a19 A  A1 
a19 A  A1 
a22 Y  A1 
a33 S  S1 
+---+----+--------------+ 
+0

グループ化したくないと思います。私はあなたが自己結合を使う必要があると思うが、私はそれをどうやって行うのか正確には分からない。 SQLの専門家の1人があなたを助けることができるように、私はそれを書き直しました。また、ここで買い物をしているテーブルには、重複レコード(2番目と3番目のレコード)があります。私はこれがちょうどタイプミス、または多分あなたはここにすべてのフィールドを表示されていないことを願っています。 – HK1

答えて

3

AとSの両方の型を持っているすべてのIDを返すクエリです:

SELECT subQuery.id 
FROM (SELECT group_table.id 
FROM group_table 
WHERE (((group_table.type) IN ("A","S"))) 
GROUP BY group_table.id, group_table.type) AS subQuery 
GROUP BY subQuery.id 
HAVING Count(subQuery.id) = 2 

あなたはを置き換えることによって、それがやや柔軟にすることができます "...(IN "A"、" S ")...のようなものがあります。" FilterTypeからのSELECTフィルタタイプ "と変更" ... Count(subQuery.id)= 2 ... ""... Count(subQuery.id)= SELECT COUNT(FilterType)From FilterTable ..."

関連する問題