PHP 多查询问题

标签 php mysql sql

我在使用 PHP 进行多重查询时遇到了一些问题。我的数据库有下表,其架构如下所示:

第一个表 - 用户

(PK) UserID,
UserFullName

UserID      FullName

1000        Arthur Whitney

 2000       Alex Schwartz

 3000       Eva Kilpatrick

第二张 table - 邀请

(PK) RowID,
InvName, InvSender, InvSenderTotal, InvReceiver, InvReceiverTotal, InvStatus

RowID  InvName InvSenderID InvSenderTotal InvReceiverID InvReceiverTotal InvStatus

  1     Fair     1000       10             2000          10            Sent

  2     Party    2000       45             1000          45            Sent

  3     Cinema   2000       12             1000          12            Sent

  4    Vacation  3000       15             1000          5            Expired

例如,当具有唯一 ID 2000 的用户 Alex Schwartz 登录时,我希望他可以看到邀请的名称、邀请发送者的姓名(如果他是邀请接收者)、邀请接收者的姓名(如果他是邀请发送者)以及邀请发送者和接收者的总数。

我设计了以下两个查询,它们产生了我想要的结果:

查询1

select i.InvName, i.InvSenderTotal, i.InvReceiverTotal, u.FullName FROM Invites as i INNER JOIN Users as u ON u.UserID = i.InvReceiverID 
WHERE i.InvStatus = 'Sent' AND i.InvSenderID = 2000

这显示了 Alex Schwartz 发送邀请时的邀请名称、邀请发送者和接收者的总数以及邀请接收者的姓名。此处的预期输出将是行 ID 2 和 3 的具体细节。

下面的查询显示了相反的结果:

查询2

select i.InvName, i.InvSenderTotal, i.InvReceiverTotal, u.FullName FROM Invites as i INNER JOIN Users as u ON u.UserID = i.InvSenderID 
WHERE i.InvStatus = 'Sent' AND i.InvReceiverID = 2000

因此,这使 Alex Schwartz 能够看到发送邀请的人的姓名以及相同的数据。此处的预期输出将是行 ID 1 的具体细节。

因此,我能够获得我想要的数据,但我需要两个不同的查询才能获得它。这在 PHP 中提出了问题,似乎只有一个查询执行。所以我的问题本质上是,有谁知道我如何将这两个查询合二为一?我也知道 multiQuerying 并尝试实现它,但也没有取得太大的成功。

提前感谢您的帮助。

最佳答案

为什么不使用UNION

select i.InvName, i.InvSenderTotal, i.InvReceiverTotal, u.FullName FROM Invites as i INNER JOIN Users as u ON u.UserID = i.InvReceiverID 
WHERE i.InvStatus = 'Sent' AND i.InvSenderID = 2000
UNION
select i.InvName, i.InvSenderTotal, i.InvReceiverTotal, u.FullName FROM Invites as i INNER JOIN Users as u ON u.UserID = i.InvSenderID 
WHERE i.InvStatus = 'Sent' AND i.InvReceiverID = 2000

关于PHP 多查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667512/

相关文章:

javascript - 实时显示日期时间时出现问题(JavaScript/JQuery)

java - 空指针异常

php - SQL 总计百分比计算

mysql - 如何从使用聚合函数分组的多个表中返回多列

php - Twig_Error_Runtime ; "core"扩展未启用;交响乐

php - 相当于 php 中的 Curl -k 选项

php - 查找并删除服务器上的所有缓存文件

mysql - 如何在 mysql 查询中执行此操作

php - 如何编写 Laravel Eloquent whereBetween 方法与两列

java - sqlserver hibernate 日期映射