2016-04-21 3 views
0

私は、任意のヘルプは大幅にSQL GROUP_CONCATは、複数の相対行に登録しよう

をいただければ幸い私は2つのテーブルの製品 'と「product_subcategorys」

の製品」を持って、今時間この上で立ち往生されています「product_subcategorys」が「製品」テーブルに複数のIDを相対的に保持しているとして、固有IDのみを保持することは

'products' 
id brand 
1 a 
2 b 
3 a 

'product_subcategorys' 
id subcat 
1 u 
1 i 
2 u 
3 u 

これは「p.id」で私が持っているクエリ、グループで動作するようには表示されません

SELECT GROUP_CONCAT(p.brand) 
FROM products p 
LEFT JOIN product_subcategorys s ON p.id = s.id 
WHERE (
     s.subcategory = "u" 
     OR s.subcategory = "i" 
     ) AS GROUPbrand 

だから私の問題は、私はそれだけで私は、クエリがブランドを返すようにしたい倍数

をカウントする必要があるので、私は明確な使用傾ける「製品」テーブルから、ブランドのリストを返したい、です「 'を2回繰り返しますが、' product_subcategorys 'に2つの一致するIDがあるため、このクエリは3回返されます

+0

あなたの質問を編集して、結果を追加してください。そして、あなたが指定するクエリは1行しか返さないので、「このクエリは3つのtiemsを返す」という意味を理解していません。 –

+0

倍数を数える必要があります。これらは複数の行でなければならないのですか? –

+0

私は「a、a、b、a」を取得している瞬間に、例えば 'a、b、a'のような行を返す必要があります – lugreen

答えて

1

これは、必要な処理を行いますか?

SELECT GROUP_CONCAT(p.brand ORDER BY p.id) 
FROM products p 
WHERE EXISTS (SELECT 1 
       FROM product_subcategorys s 
       WHERE p.id = s.id AND 
        s.subcategory IN ('u', 'i') 
      ); 
+0

ありがとうございます!すみませんでした。それは私がその場所全体を微調整していた長いクエリの一部だったので、それをテストするのに私はずっと時間がかかりました。それはトリックをやっているようだ! – lugreen