2016-07-02 15 views
0

私は以下のように4つのテーブルを持っています。オークションロットテーブルのすべてのレコードを取得しているうちに、すべてのロットを入札テーブルにフェッチしようとしています。グループを持つ複数のテーブルのMySqlクエリ

私が試したクエリも、使用されているdb構造とともに以下に示します。

Auctions (id, name) 

id | name 
----------- 
1 | auction1 
2 | auction2 


Auction_lots (id, name, auction_id) 

id | name | auction_id 
--------------------------------- 
1 | lot1 | 2 
2 | lot2 | 2 
3 | lot3 | 2 
4 | lot4 | 2 
5 | lot5 | 2 


Bids (id, user_id, auction_id, lot_id) 

id | user_id | auction_id | lot_id 
-------------------------------------------- 
1 | 1 | 2  | 5 
2 | 1 | 2  | 3 
3 | 1 | 2  | 1 
4 | 1 | 2  | 2 


Users(id, name) 

id | name 
----------- 
1 | user1 
2 | user2 

私はオークション名、ロット名とユーザの詳細

を持つユーザーに置か入札は、私はすべての多くを取得中

select PB.*, U.*, A.name as auc_name, AL.name as lot_name 
    from auctions as A INNER JOIN 
     auction_lots as AL 
     ON A.id = AL.auction_id RIGHT JOIN 
     phone_bids as PB 
     ON AL.auction_id = PB.auction_id INNER JOIN 
     users as U 
     ON PB.user_id = U.id 
    WHERE U.id =".$user_id." 
    GROUP BY lot_name 

私はちょうど入札テーブルの多くを必要としようとしたすべてのauction_lotsを必要とする

+0

なぜその右結合を追加しますか?集計関数がなくてグループを追加したので、それらを削除しました –

答えて

0

あなたが望むものを得るためには、右のジョインとグループを削除してください

select 
     PB.*, U.*, A.name as auc_name, AL.name as lot_name 

    from 
     auctions as A 

    INNER JOIN 
     auction_lots as AL 
     ON 
     A.id = AL.auction_id 

    INNER JOIN 
     phone_bids as PB 
     ON 
     AL.auction_id = PB.auction_id 

    INNER JOIN 
     users as U 
     ON 
     PB.user_id =U.id 
    WHERE 
     U.id =".$user_id." 
+0

それはうまくいきませんでした。私は次のように試してみましたが、うまくいきましたが、それを行う正しい方法がわからない場合 -------------------------- ------------------------------------------- \t "select \t \t PB。*、U. *、auc_nameとして、AL.name \t \t \t からphone_bids lot_name としてPB としてA.name \t LEFTはPB.auction_id \t \t ON \t \tとして \t \tオークションに参加します= A. ID は\t LEFT \t \t PB.user_id = U.id ON U \t \tとして \t \tユーザを登録しよう \t \t \t \t PB.lot_id = AL.id \t左側にAl等 \t \t auction_lotsをJOIN \t WHERE \t \t U.id = "。$ user_id" – rgoyal

+0

prevでエラーが発生しましたousクエリ –

+0

あなたがphon_bidsで始めるとあなたが取り残されたとき、そしてあなたが他のテーブルに参加したままにしておくと、phon_bidsのすべてのレコードと他のテーブルの関連するマッピングレコードだけが得られますが、上記の例のphon bidはマッピングテーブルです。他のテーブルと一致しないエントリがある –

関連する問題