如果标题具有误导性,我很抱歉,但我不知道如何总结,抱歉:(
基本上,我制作了一个活动系统,可以显示您可以参加的活动。 我有两张桌子
“事件”和“注册” 事件表包含有关单个事件,事件的日期时间,价格等的所有信息......
每次用户点击事件的注册时,都会在注册表中添加一条记录。 记录如下所示:Registrationid,eventid,date,status和userid
现在我使用此查询来获取所有传递的事件:
SELECT * FROM events WHERE Date < CURRENT_DATE() ORDER BY Date ASC
我只希望它显示用户页面上的先前事件,如果用户实际参加了该事件。有没有办法可以检查注册表,以及是否存在该事件的记录;展示活动?我可以这样做是PHP,但我认为它可以通过MySQL,虽然我不完全确定。
是否有可以处理该作业的查询? :)
答案 0 :(得分:1)
SELECT * FROM events e , registrations r where e.eventid = r.eventid AND e.Date < CURRENT_DATE()
答案 1 :(得分:1)
当然,这是一个非常简单的连接操作。以下是我将如何做到这一点:
select e.*
from event e join registration r
on (r.event_id=e.event_id)
where r.user_id=123 and e.date < current_date()
order by e.date asc
其他一些提示:
有关MySQL中连接的更多信息,请查看:https://dev.mysql.com/doc/refman/5.0/en/join.html
答案 2 :(得分:0)
SELECT e.*
FROM events e
JOIN registrations r
ON e.eventid = r.eventid
WHERE Date < CURRENT_DATE()
AND r.userid = <insert id here>
ORDER BY Date ASC
此查询会为您提供事件表中的所有字段,其中注册表中的记录具有特定的用户ID。
答案 3 :(得分:0)
示例选择包含您的信息的连接:
SELECT * FROM events AS e WHERE e.Date < CURRENT_DATE() JOIN registration AS r ON e.id = r.eventid ORDER BY e.Date ASC
答案 4 :(得分:0)
尽管其他评论者建议使用JOIN
(这是一个不错的建议),但我认为在这种情况下使用IN
加上子查询实际上更好:
SELECT *
FROM events
WHERE eventid IN
( SELECT r.eventid
FROM registrations r
WHERE r.userid = ...
)
AND date < CURRENT_DATE()
ORDER
BY date ASC
(用适当的用户ID替换...
)。
答案 5 :(得分:0)
使用JOIN
,您可以为registrations
选择userid
行,然后获取events
数据
SELECT
r.*, // Instead of *, you could specify the columns - r.userid, r.status, etc
e.* // Instead of *, you could specify the columns - e.event_name, e.Date, etc
FROM
registrations r
JOIN
events e
ON
r.eventid = e.id
WHERE
r.userid = YOUR_USERID
AND
r.status = ATTENDED
AND
e.Date < CURRENT_DATE()
ORDER BY
e.Date ASC