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

朋友请求表显示用户之间的关系,其中C代表CompleteP代表Pending。表示如果status = C两者都是朋友并且status = P请求是否待处理。

frei_session表显示网站的所有在线用户。

用户表存储图像的路径

我想显示用户的图像及其 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 回答