我在使用PHP进行多次查询方面遇到了一些问题。我的数据库有以下表格,其架构如下所示:
第一个表 - 用户
(PK) UserID,
UserFullName
UserID FullName
1000 Arthur Whitney
2000 Alex Schwartz
3000 Eva Kilpatrick
第二张表 - 邀请
(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
例如,当用户Alex Schwartz(具有唯一ID 2000)登录时,我想让他能够看到邀请的名称,邀请发件人的姓名(如果他是邀请接收者),邀请收件人的姓名(如果他是邀请发件人)以及邀请发件人和收件人的总数。
我设计了以下两个查询,这些查询产生了我想要的结果:
QUERY1
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发送邀请时,这会显示Invite Name,Invite Sender和Receivers的总数以及Invite Receiver的名字。此处的预期输出将是行ID 2和3的具体细节。
以下查询显示了反向:
QUERY2
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并试图实现这一点,但也没有取得多大成功。
先谢谢你的帮助。
答案 0 :(得分:0)
为什么不使用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
答案 1 :(得分:0)
作为备注,您可以在不sys.stdin.read()
的情况下执行此操作(除非您有意删除重复项,否则优先于import sys
data = sys.stdin.read()
data_list = data.strip().split('\n')
):
union all