2010-12-02 14 views
1

このクエリを作成する際に助けてもらえますか?SQLでテーブルを作成する

ユーザーは、製品ビデオスロットを予約して、1つの製品ビデオを宣伝します。予約テーブルはこれらの予約を取得します。予約スポットは、製品またはビデオではなく、ユーザーに割り当てられます。 #1位の商品の#1位の動画は、宣伝されている動画になります。

予約テーブル

id user_id position 
---- -----  --------  
1  100  1    
2  150  2    

ユーザーテーブル ユーザーは1-nの予約が

id  name 
---- ---- 
100 John Smith 
150 Herby Brown 

Productsテーブル ユーザは1-nの製品を持つことができる有することができる

id name  user_id rank 
--- ----  ------- ----  
1  bike  100  1    
2  stereo  100  2 
3  computer 100  3 
4  notebook 150  1 
5  scooter  150  2 

ビデオテーブル 製品は、だから、1-nの動画

id name   product_id  user_id rank 
--- ----   -----------  ------- ---- 
1  bike video1  1    100  1    
2  bike video2  1    100  2 
3  computer video  3    100  3 
4  notebook video  4    150  1 
5  scooter video  5    150  2 

を持つことができ、クエリが読み込み、言葉で:各予約レコードの 、#1位の製品のために#1位のビデオを取得予約されたユーザーの場合予約の位置によって結果を注文する。

+0

あなたがこれまでに試みられてきましたか? –

+0

私は私の哀れな試みを示すにはあまりにも恥ずかしいです。私が本当に困っているのは、#1位の製品の#1位のビデオだけです。ランク1の行を取得することなく、まっすぐに参加していれば、はるかに簡単です。 – Paul

答えて

1
SELECT v.id, 
     v.name, 
     v.rank, 
     v.user_id, 
     u.name AS uname 
FROM videos v 
     JOIN users u 
     ON u.id = v.user_id 
     JOIN bookings b 
     ON u.id = b.user_id 
WHERE v.product_id = (SELECT id 
         FROM products 
         WHERE user_id = b.user_id 
         ORDER BY rank ASC 
         LIMIT 1) 
ORDER BY b.position ASC, v.rank ASC 

一部簡略化されたクエリ:

SELECT v.id, 
     v.name, 
     v.user_id, 
     u.name AS uname, 
     p.name AS pname 
FROM videos v 
     JOIN users u 
     ON u.id = v.user_id 
     JOIN bookings b 
     ON u.id = b.user_id 
     JOIN products p 
     ON p.id = v.product_id 
WHERE v.product_id = (SELECT id 
         FROM products 
         WHERE user_id = b.user_id 
           AND rank = 1) 
     AND v.rank = 1 
ORDER BY b.position ASC 
+1

神はあなたを祝福します!私はあなたにビールを買うことを望みます。 – Paul

+0

#1の商品と#1の動画がない場合はどうですか?代わりに、彼らは2または3または何もランクされていません。その場合、最も低い番号のランクの製品とビデオを取得するために、クエリをどのように変更しますか。 – Paul

+0

最初のクエリは#1の製品を扱いません。これは、最初の製品を検索するためにorder byを使用するため、それはまた、v。 – Pentium10

関連する問題