2016-11-24 7 views
0

現在のクエリに対して1の制限を持つ最大IDのみを選択するように設定しようとしています。SELECTクエリの最大IDを追加する

私は理解しようとしているものの実際の例を示す以下のrextesterへのリンクを持っています。私はこの例を作成したときに何が間違っていたのか分かりません。

とにかく、あなたが表示されます。私のprofile_img表中のいくつかの値です

INSERT INTO `profile_img` 
VALUES 
(1,24,'beach'), 
(2,55,'sandals'), 
(3,56,'hotel'), 
(4,55,'ocean'), 
(5,55,'corona'), 
(6,55,'tacos') 
; 

。今私の質問は、このON p.user_id = f.friend_oneのすべてのプロフィール画像を選択します。重複出力が発生しました。

enter image description here

私はちょうど出力

55  
56 

、それにappropiateの最大ID imgにそれをしたい:それはこのようになります。どのようにすればよいですかSELECTimgの最大IDは、friend_oneと一致するuser_idのprofile_imgテーブルの列ですか? ON p.user_id = f.friend_one

ただし、ユーザーにはprofile_imgがないことがあります。これまで、私はこれをクエリに使って、デフォルトのimgを持っていない人のためにimgを取得しました。 (case when p.img <> '' then p.img else 'profile_images/default.jpg' end) as img

SELECT f.* 
     , p.* 
    FROM friends f 
    LEFT JOIN profile_img p 
    ON p.user_id = f.friend_one 
    WHERE f.friend_two = ? 
    AND f.status = ? 

http://rextester.com/RLXS27142

+1

あなたは '友人' を存在する場合は 'DROP TABLEを含める必要があります。 DROP TABLE IF EXISTS 'profile_img'; 'rextester http://rextester.com/ECAX16022の先頭にある –

+0

@JuanCarlosOropezaありがとうございました!私はあなたが先日作ったものを見ていました。それが必要であることをちょうど知らなかった。 sqlfiddleはあまりにも厄介で遅いので、私はそのソースを見せてうれしいです。 – Paul

+1

MySQL、Postgres、SQLサーバに必要なのはそれだけです –

答えて

1

私が正しく理解していれば、あなただけの最大のidとプロフィール画像が欲しい:

SELECT f.*, p.*, 
     COALESCE(p.img, 'profile_images/default.jpg') as profile_img 
FROM friends f LEFT JOIN 
    profile_img p 
    ON p.user_id = f.friend_one AND 
     p.id = (select max(p2.id) from profile_img p2 where p2.user_id = p.user_id) 
WHERE f.friend_two = ? AND f.status = ?; 
+0

うーん..私はそれがうまくいくと思っていますが、これを私の質問に入れるのを忘れました。 profile_imgを持っていない人には、プロファイルimgをデフォルトに設定します。別のクエリではこれがありますが、作成したクエリに追加する方法がわかりません。 '(p.img <>' 'の場合、他に' profile_images/default.jpg 'のようになります) \t \t end) img' – Paul

+1

@Paul。 。 。私は 'select'の中で' coalesce(p.img、 'profile_images/default.jpg')をimg'と期待しています。 –

+0

このように? 'SELECT f。*、p。*、coalesce(p.img、 'profile_images/default.jpg')をimg'とし、そうであればプロファイルのない行のIDではなく55の結果のみを表示します。 。 – Paul

関連する問題