希望对某些SQL有所帮助。我对MySQL很新。
如果有帮助,我正在使用Code Igniter,但通常SQL会足够好。我会忽略Active Record。
我想要使用几张桌子:
Users
id
first_name
last_name
username
Events
id
created_by_user_id
name
start_date
start_time
end_date
end_time
Attendees
id
user_id
event_id
Friends
user_id
friend_id
approved
所以,当我追求的时候是:
获取所有结果:
我需要将users表加入到this中,所以我可以在View中找到类似的内容:
<?= foreach($events as $e): ?>
<?= $e->name; ?> created by <?=$e->first_name . ' ' . $e->last_name; ?>
Happening: <?= $e->start_date; ?>
<?php endforeach; ?>
谢谢!
答案 0 :(得分:0)
首先,我建议重组事件并使用TIMESTAMP类型连接字段start_date / start_time和end_date / end_time以及开始/结束。
所以对于第一个问题:
SELECT DISTINCT a1.event_id
FROM Attendees a1, Attendees a2
WHERE
a1.id = a2.id
AND a1.user_id = ${USER_ID}
AND a2.user_id IN
(SELECT friends_id FROM
Friends WHERE approved = True
AND user_id = ${USER_ID});
或者你可以使用INTERSECT,对你来说更轻松。
第二个问题的解决方案,如果合并日期/时间属性:
SELECT id FROM Events WHERE end < NOW();
第三个查询:
SELECT id from Events ORDER BY start;