方案
用户可以表示有兴趣参加活动的晚宴,管理该活动的人可以选择接受他们的请求,如果请求已经被接受,则接受"接受"然后应禁用该按钮。
什么工作
一切正常,直到需要禁用按钮的部分,信息显示正确,我很难连接数据库表,以便我可以使用我需要的信息来禁用按钮。
尝试
这就是我的查询
SELECT
r.id as request_id,
r.status as dinner_status,
r.dinner_id,
d.name as dinner_name,
d.date as dinner_date,
u.first_name as user_first_name,
u.last_name as user_last_name,
u.id as user_id,
u.description as user_description,
u.profile_image as user_profile_image,
c.name as user_college_name,
c.id as user_college_id,
c.slug as user_college_slug
FROM `requests` r
LEFT JOIN `college_dinners` d ON r.dinner_id = d.id
LEFT JOIN `user` u ON r.guest_id = u.id
LEFT JOIN `college` c on u.college_id = c.id
WHERE d.college_id = $collegeId
AND u.id = '77'
现在是最重要的部分。
有一个名为invitations
的表,只有在他们的晚餐请求被排除后才会保留guest_id
和dinner_id
。我如何利用这个invitations
表来更新我的查询并在其中包含我可以在我的视图上启用和禁用按钮的信息?
PHP尝试
我愿意在PHP中自己解决这个问题,所以我决定使用foreach
循环来获取我从上面的查询得到的结果,并在foreach
内创建另一个查询表格invitations
然后使用if
我正在检查当前循环的dinner_id
是否与dinner_id
匹配,而guest_id
的{{1}}是否与foreach
匹配在foreach ($invitations as $invitation) {
$invitatedSQL=".....";
if ( $invitedResult['guest_id'] == $invitation['user_id'] && $invitedResult['dinner_id'] == $invitation['dinner_id'] ) {
$isInvited = 'yes';
}
}
内部进行查询,但是通过这样做,索引变得紧张。
If Cells(2, 1).Value = "M" And Cells(2, 2).Value = "son" Then
MsgBox "You've found a mistake"
else
MsgBox "Keep checking"
End If
请注意我在前端不需要任何帮助,它只是我遇到问题的mysql查询。我非常感谢你对此事的任何帮助
答案 0 :(得分:3)
只是一个简单的左连接。如果条件为false,则会有NULL。
LEFT JOIN `invitations` i on r.guest_id = i.guest_id AND r.dinner_id = i.dinner_id
P.S。
您的LEFT JOIN
很少有人像普通INNER JOIN
那样行事。你应该阅读有关差异的内容
What is the difference between "INNER JOIN" and "OUTER JOIN"?