1

3つのテーブルがあり、そこからユーザーデータを取得したいと思います。

表1 : frei_session

username    session_id

Prince      51
Dilip       49
Sumit       50

表2: friendrequest

requestTo   requestFrom     status

49              50              C
50              51              C
49              51              P

表3: users

accountId    userImage

49           image_49.jpg
50           image_50.jpg
51           image_51.jpg

friendrequestテーブルは、 CCompleteを表し、 PPendingを表すユーザー間の関係を示します。status = C両方が友達であり、status = Pリクエストが保留中の場合を意味します。

frei_sessionテーブルには、Webサイトのすべてのオンラインユーザーが表示されます。

ユーザーテーブルには画像のパスが保存されています

ユーザーの画像とそのIDを表示したいと思います。

ユーザー49がオンラインであると仮定します

SELECT  IF(a.RequestTo = 49, c.userName, b.userName) username,
        IF(a.RequestTo = 49, c.session_ID, b.session_ID) Session_ID
FROM    friendRequest a
        INNER JOIN frei_session b
            ON a.requestTo = b.session_ID
        INNER JOIN frei_session c
            ON a.requestFrom = c.session_ID
WHERE   a.status = 'C' AND
        49 IN (a.requestTo, a.requestFrom)

このクエリは、このような出力を表示します

username    session_id

Sumit           50

でもこんな出力が欲しい

username    session_id    userImage

Sumit       50            image_50.jpg

何か案は?

4

1 に答える 1

1

クエリ全体をサブクエリでラップし、テーブルと結合できますusers

SELECT  x.*, y.userImage
FROM    
        (
            SELECT  IF(a.RequestTo = 49, c.userName, b.userName) username,
                    IF(a.RequestTo = 49, c.session_ID, b.session_ID) Session_ID
            FROM    friendRequest a
                    INNER JOIN frei_session b
                        ON a.requestTo = b.session_ID
                    INNER JOIN frei_session c
                        ON a.requestFrom = c.session_ID
            WHERE   a.status = 'C' AND
                    49 IN (a.requestTo, a.requestFrom)
        ) x INNER JOIN users y
            ON x.session_ID = y.accountID
于 2013-03-11T08:37:04.907 に答える