TABLES
***************************************
| events | attendance |
***************************************
| event-id | atd-id |
| event-name | event-id |
| event-date-time | user-id |
| event-address | guests |
| | |
***************************************
事件日期时间是(日期时间)格式。
我正在尝试获取用户将参加的所有活动, 并按日期和时间排序。
$sql = "SELECT *
FROM events, attendance
WHERE `attendance.event-id` = `events.event-id`
AND `attendance.user-id` = ".$user-id." ORDER BY `event-date-time` DESC";
显示行:
我也尝试过:
$sql = "SELECT *
FROM `events` e
INNER JOIN `attendance` a ON a.event-id = e.event-id
ORDER BY `event-date-time` DESC
WHERE a.user-id = ".$user_id;
答案 0 :(得分:1)
这可能有帮助。
$sql = "SELECT e.*, a.atd-id, a.user-id, a.guests FROM `events` e
LEFT JOIN `attendance` a ON a.event-id = e.event-id
WHERE a.user-id = ".$user_id."
ORDER BY `event-date-time` DESC;
INNER JOIN
获取两个表上的公用记录。
LEFT JOIN
从另一个具有引用身份的表中获取记录。
在您的情况下,您正在基于引用键event-id
将表引用到另一个表,因此必须使用左连接。另外,必须将WHERE
子句放在Order By
之前。
如果要显示参数,请仍然使用在查询的每个表上声明的别名,因此,请指定名称。