2016-05-19 24 views
4

方案PHP - 无法链接表,以获得所需的信息

用户可以表现出兴趣参加活动的晚餐,谁管理该事件的人可以选择接受他们的要求或不和,如果该请求已被接受,“接受”按钮应该被禁用。

请告诉我工作

一切工作,直到在需要禁用的按钮部分,信息显示的是正确的,我有连接数据库中的表,这样我就可以再使用我需要的信息很难禁用该按钮。

的尝试

这是我的查询看起来像

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_iddinner_id仅当它们吃饭请求已除外表。我怎样才能利用这个invitations表来更新我的查询并在其中包含信息,我可以在该视图上启用和禁用按钮?

PHP的尝试

我愿意在PHP中自我解决这个了,所以我决定使用foreach循环。因我从上面的查询得到的结果和foreach里面我创建另一个查询到表invitations,然后使用if我检查当前循环的dinner_id是否匹配dinner_idguest_idforeach内的第二个查询相同,但通过这样做我索引被拧紧。

foreach ($invitations as $invitation) { 
    $invitatedSQL="....."; 

if ($invitedResult['guest_id'] == $invitation['user_id'] && $invitedResult['dinner_id'] == $invitation['dinner_id']) { 
    $isInvited = 'yes'; 
} 
} 

请注意,我不需要任何帮助在前端,它只是mysql查询,我有问题。我真的很感谢在这件事情上的任何帮助

回答

3

只是一个简单的左连接。如果条件为假,则会有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 s。你应该阅读有关差异。
What is the difference between "INNER JOIN" and "OUTER JOIN"?

+0

嗨,谢谢你看看。我假设'g.guest_id'的意思是'r.guest_id','d.dinner_id'的意思是'r.dinner_id' – Saadia

+0

我的错误。我编辑了答案。 – Michas

+0

非常感谢你,我被困在php内部2个多小时,不知道我不得不做的是另一个'JOIN'。太感谢了 – Saadia