2016-04-16 17 views
0

私のデータベースにスタックがあります。私の問題は3つのテーブルがあり、2つは多対多の関係にあり、もう1つは2つのテーブルから生成されています。リレーションとオフセット多対多の関係

私はページングが1つのテーブルに従って、2台の親行の1

表カスタマー従う、それは2台の親を意味し、私はページングに旺旺:

ID名メール

1 Peter [email protected]

2 Jonh [email protected]

3サラ[email protected]

4トム[email protected]

5ジェット[email protected]

2テーブル製品

ID - ----商品名
1 -----シャンプー
2 -----コカ
3 -----ホットドッグ
4 -----キットKAT
5 -----チーズ
6 -----パスタ
7 -----チョコレート
8 - ----ピーナッツバター
9 -----ハンバーガー
10 -----サンドイッチ

表CustomerBuyProduct

ID CusID ProductID 
1 1  1 
2 1  3 
3 1  4 
4 2  1 
5 2  10 
6 3  4 
7 3  10 
8 3   2 
9 3   6 
10 3   5 
11 3   3 
12 4   1 
13 5   1 

私の問題は、3つのテーブルを選択して結合したときに、11行、私は3つのテーブルからすべての行を取得したいので正しく表示されます。 ページングは​​顧客テーブルに従います。行または5行が、それは彼らが

総ように見える買う顧客テーブルと製品で、総顧客が表示されます:3行

No.  Customer Name    Bought Product 
              Shampoo 
    1  Peter       Coca 
              Hotdog 

    2  Jonh       Shampoo 
              Sandwich 

              Kitkat 
              Sandwich 
    3  Sara       Coca 
              Cheese 
              Hotdog 

         Page 1/2 

トータル:2行

4  Tom       Shampoo 

    5  Jet       Shampoo 

をしかし、私はへの見当がつかない選択文を作るこの場合は 誰でも私を助けることができますか? ありがとうございました

+0

は私が行うことができますどのようにテーブルのデータを表示したい場合は申し訳ありませんが、それはテーブルIのように見える – RiggsFolly

答えて

0

GROUP_CONCATGROUP BY Customer.ID句を使用してみてください。

SELECT 
    Customer.ID, Customer.Name, GROUP_CONCAT(products.Name SEPARATOR ' ') 
FROM 
    Customer LEFT JOIN 
    CustomerBuyProduct ON CusID = Customer.ID LEFT JOIN 
    products ON ProductID = products.ID 
GROUP BY 
    Customer.ID 

http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

+0

、それを制御しているPHPコードANF、あなたがはるかにこれを取得するために書かれているクエリを表示します私の例では1行の顧客が2つ以上の製品に行間を広げます。グループ連結は行を1行にマージするため – Shen

+0

GROUP_CONCAT(products.Name SEPARATOR '
') のようにセパレータに
タグを使用した場合はどうなりますかその仕事?私はあなたにも GROUP_CONCAT(products.Name SEPARATOR「​​​​​​」) – programmerKev

+0

私はあなたの方法を試してみたが、私はあなたのクエリに従って検索した場合、2つの項目を買ったお客様は、同じ項目が表示されますのような何かができると仮定します名。例顧客ID:2名前:Peter - Bought Sandwich and Coca。しかし、私はサンのような検索する場合、クエリはサンドイッチ​​Sanwichを返します、それは私のクエリは ' Customer.ID、Customer.Name、GROUP_CONCAT(product.PName SEPARATOR '​​')をSELECT – Shen