PHP多查询问题
关于使用PHP进行多查询,我遇到了一些问题。我的数据库有以下表格,其架构如下所示: 第一个表-用户PHP多查询问题,php,mysql,sql,Php,Mysql,Sql,关于使用PHP进行多查询,我遇到了一些问题。我的数据库有以下表格,其架构如下所示: 第一个表-用户 (PK) UserID, UserFullName UserID FullName 1000 Arthur Whitney 2000 Alex Schwartz 3000 Eva Kilpatrick 第二桌-邀请 (PK) RowID, InvName, InvSender, InvSenderTotal, InvReceiver,
(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)登录时,我希望他能够看到邀请的名称、邀请发送者的名称(如果他是邀请接收者)、邀请接收者的名称(如果他是邀请发送者)以及邀请发送者和接收者的总数
我设计了以下两个查询,它们产生了我想要的结果:
问题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中出现了一些问题,似乎只执行一个查询。所以我的问题是,有人知道我如何将这两个查询组合成一个查询吗?我也知道多重查询,并尝试过实现它,但在这方面也没有太大的成功
提前感谢您的帮助。为什么不使用
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
为什么不使用
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
请注意,您可以在不使用
union all
的情况下执行此操作(这比union
更可取,除非您有意删除重复项):
请注意,您可以在不使用
union all
的情况下执行此操作(这比union
更可取,除非您有意删除重复项):
实际上似乎有必要解决的问题是,为什么在PHP中运行两个SELECT查询时会出现问题?我自己并不确定。每当我在PHP中运行这两个查询时,似乎只有第一个查询成功完成。我甚至在phpMyAdmin中运行了查询,并确定第二个查询得到了我需要的数据。这就是为什么我昨天简要地研究了multiQuery函数。实际上似乎有必要解决的问题是,为什么在PHP中运行两个SELECT查询时会出现问题?我自己也不确定。每当我在PHP中运行这两个查询时,似乎只有第一个查询成功完成。我甚至在phpMyAdmin中运行了查询,并确定第二个查询得到了我需要的数据。这就是为什么我昨天简要地研究了multiQuery函数。说得好!我已经忘记了那个功能。感谢您的编辑和帮助。@感谢您的帮助很高兴能提供帮助。很好!我已经忘记了那个功能。感谢您的编辑和帮助。@感谢您的帮助很高兴能提供帮助。