Php 如何在mysql中执行内部连接
我必须编写一个查询,这样我就需要获取开始日期为30分钟的事件。 我的条件是: 1从事件表中获取事件 2用户表中id为的事件的集合创建的联接 3用户ser id为的注释表中的注释 但这里的问题是,如果没有对事件的评论,那么事件本身就不会来。如果有任何评论,它就会来。我不想要这个。如果没有评论,只需将其作为空的获取,但不要隐藏整个事件。有人能帮我吗?。谢谢Php 如何在mysql中执行内部连接,php,mysql,sql,database,Php,Mysql,Sql,Database,我必须编写一个查询,这样我就需要获取开始日期为30分钟的事件。 我的条件是: 1从事件表中获取事件 2用户表中id为的事件的集合创建的联接 3用户ser id为的注释表中的注释 但这里的问题是,如果没有对事件的评论,那么事件本身就不会来。如果有任何评论,它就会来。我不想要这个。如果没有评论,只需将其作为空的获取,但不要隐藏整个事件。有人能帮我吗?。谢谢 select u.email ,group_members.user_id,users.first_name,u.first_name
select u.email ,group_members.user_id,users.first_name,u.first_name
as host_name,events.name,events.start_date,comments.comments,c.first_name as
comment_user,comments.id from events
inner join users as u on u.id = events.created_by
inner join comments on events.id = comments.event_id
inner join group_members on events.group_id = group_members.group_id
inner join users as c on comments.from_user = c.id
inner join users on group_members.user_id = users.id
where events.start_date between date_add(now(),interval 1 minute) and date_add(
now(),interval 30 minute)
and group_members.user_status = 2
and events.status = 2
使用“内部联接”关键字,并通过启用关键字来选择这两列
您需要一个到comments表的左连接。我会把那张桌子放在from子句的最后
在注释上使用左连接后,还需要为发件人用户使用左连接。我用别名替换了所有表名-这使跟踪哪个表用于哪个目的变得更容易。使用左连接将其更改为事件上的左连接注释。id=comments.event\u I您可以使用内部连接进行左连接不可能…这就是左/右/完全外部连接的点。可能的重复看起来有点奇怪。你可以有几个评论和几个小组成员每个事件似乎和你交叉加入这两个。因此,对于一个事件,有12条评论和7个组成员,您将显示84条记录,其中所有这些评论和成员都会一次又一次地显示出来。这是你想要的吗?你有没有费心去读这个问题;问题的实际文本,而不仅仅是问题标题?
SELECT EMP.EMP_ID, EMP.EMP_NAME, DEPT.DEPT_NAME FROM EMP
INNER JOIN DEPT ON DEPT.DEPT_ID = EMP.DEPT_ID;
select u.email, gm.user_id, gu.first_name, u.first_name as host_name,
e.name, e.start_date, c.comments, uc.first_name as comment_user,
c.id
from events e inner join
users u
on u.id = e.created_by inner join
group_members gm
on e.events.group_id = gm.group_id inner join
users gu
on gm.user_id = gu.id left join
comments c
on e.id = c.event_id left join
users uc
on c.from_user = uc.id
where e.start_date between date_add(now(),interval 1 minute) and date_add(now(),interval 30 minute) and
gm.user_status = 2 and
e.status = 2;