php - 从表中选择逗号分隔的记录以及用户图像

标签 php mysql sql join

表:frei_session

id  username        accountId   status  status_mesg

14  Sumit Bijvani   50          0       I am available
16  Dilip Borad     49          1       I am available
15  Karan Bijvani   51          1       I am available

表:用户

accountId    friends      userImage

49           50,52        49.jpg
50           49,52,51,44  50.jpg
51           50           51.jpg

我有 2 个表,frei_session 有在线用户的记录,users 表有用户和他们的 friend 的数据,用逗号分隔 ID。

我想根据 users 表的 friends 列从 frei_session 表中检索数据。

对于前任

如果 用户 49 在线,我想要如下所示的输出

id  username        accountId   status  status_mesg        userImage

14  Sumit Bijvani   50          0       I am available     50.jpg

因为用户 50 和 52 是用户 49 的 friend ,但现在只有用户 50 在线

我试过以下查询。但它显示错误的用户图像。

SELECT  b.*, a.userImage
FROM    users a
        INNER JOIN frei_session b
            ON FIND_IN_SET(b.accountID, a.friends) > 0
         INNER JOIN
        (
            SELECT  accountID, username, MAX(id) id
            FROM    frei_session
            GROUP   BY accountID, username
        ) c ON b.accountID = c.accountID AND
                b.username = c.username AND
                b.id = c.id
WHERE   b.status = 0 AND
        a.accountID = 49

SQL Fiddle Demo

最佳答案

frei_session 的结果是user (a)的 friend 这就是为什么它不包含您 friend 的图像,而是包含您要搜索的用户的图像的原因。所以为了让你得到你 friend 的形象,你需要把它加入另一个 user (d)所以你可以从 frei_session 得到正确的图像表。

SELECT  b.*, d.userImage
FROM    users a
        INNER JOIN frei_session b
            ON FIND_IN_SET(b.accountID, a.friends) > 0
         INNER JOIN
        (
            SELECT  accountID, username, MAX(id) id
            FROM    frei_session
            GROUP   BY accountID, username
        ) c ON b.accountID = c.accountID AND
                b.username = c.username AND
                b.id = c.id
        INNER JOIN users d
          ON b.AccountID = d.AccountID
WHERE   b.status = 0 AND
        a.accountID = 49

关于php - 从表中选择逗号分隔的记录以及用户图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472008/

相关文章:

php - DOMDocument 和 UTF8。 MySQL 说 : Incorrect string value

c# - 在 ASP.net C# 中不使用 GridView 输出数据集的最简单方法是什么

mysql - 帮助加入查询和返回限制

sql - 连接的最大计数

mysql - Left Join查找不同id的两个表之间的差异

python - 在mysql中添加列移动平均线

php - 如何在自定义 404 页面上设置页面标题?

PHP+AJAX 与 MySQL - 每 2 秒查询一次,在 TIME_WAIT 中太多

php - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器相对应的手册, '' 文章的 WHERE (`title` LI

asp.net - 从MySQL表中采样纪元时间戳字段时获取多条记录?