gpt4 book ai didi

php - 多个左连接返回双行

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:48 25 4
gpt4 key购买 nike

我有4张 table

  • 用户
  • 图片
  • 消息
  • 好友请求

我试图在单个查询中获取好友请求和新消息。它运作良好,但当我离开加入“friendsreuqests”时,我得到了多行。

这是我的查询:

SELECT username,
f1.userid as reqId,
m1.msg, m1.userid,
p1.picHash, p1.extension, UNIX_TIMESTAMP( m1.sent ) AS date
FROM users
LEFT JOIN pictures p1 ON p1.userid = users.id
LEFT JOIN messages m1 ON m1.contactid = users.id AND m1.delivered =0
LEFT JOIN friendrequests f1 ON f1.contactid = users.id AND f1.delivered=0 AND f1.request =1
WHERE users.id =7
ORDER BY date ASC

这是 MySQL 的结果:

Kungen  3     gregegerg     1    dc825b1c8a35593be4d172db7    jpg    1369839537
Kungen 12 gregegerg 1 dc825b1c8a35593be4d172db7 jpg 1369839537
Kungen 3 HEJH 1 dc825b1c8a35593be4d172db7 jpg 1369839540
Kungen 12 HEJH 1 dc825b1c8a35593be4d172db7 jpg 1369839540

如您所见,结果翻了一番。此时我只想得到两行。如果我有两条新消息但没有新 friend 请求那两行应该是 NULL。

最佳答案

如果您想在单个查询中获取好友请求 消息,那么我希望该查询具有union all。您的查询正在表之间进行连接。这会将有关好友请求的信息添加为附加。你想要它在额外的行中。

我不确定 friends 表中的哪些字段对应于您请求的哪些字段。但这里有一个使用 union all 的查询示例:

SELECT username, users.id as reqId, m1.msg, m1.userid, 
p1.picHash, p1.extension, UNIX_TIMESTAMP( m1.sent ) AS date
FROM users LEFT JOIN
pictures p1 ON p1.userid = users.id LEFT JOIN
messages m1 ON m1.contactid = users.id AND m1.delivered =0
WHERE users.id =7
union all
SELECT username, users.id as reqId, NULL, NULL,
NULL, NULL, UNIX_TIMESTAMP( f1.sent ) AS date
FROM users LEFT JOIN
friendrequests f1
ON f1.contactid = users.id AND f1.delivered=0 AND f1.request =1
ORDER BY date ASC

关于php - 多个左连接返回双行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16818018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com