Php 从内部联接中选择*-从两个表中选择

Php 从内部联接中选择*-从两个表中选择,php,mysql,sql,join,Php,Mysql,Sql,Join,事件日期时间是日期时间格式 我正在尝试获取用户将参加的所有活动, 并按日期和时间订购 TABLES *************************************** | events | attendance | *************************************** | event-id | atd-id | | event-name | event-id |

事件日期时间是日期时间格式

我正在尝试获取用户将参加的所有活动, 并按日期和时间订购

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;
内部联接获取两个表上的公共记录

左连接从另一个具有引用标识的表中获取记录

在您的情况下,您正在根据引用的键事件id将表引用到另一个表,因此必须使用左联接。此外,WHERE子句必须放在Order By之前


如果要显示参数,请仍然使用在查询的每个表上声明的别名。因此,请指定名称。

ORDER BY goes在WHERE之后。您还应该学习使用参数。修复order by子句后会出现什么错误。请在代码问题中给出一个-cut&paste&runnable代码;作为初始化代码的示例输入,所需和实际输出包括逐字错误消息;标签和版本;清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。调试基础。对于包含DBMS/product和DDL的SQL,其中包括约束和索引以及表格格式的基表初始化。PS您有一个语法错误。阅读语法和手册。显示组成子表达式正常。请参阅,其他链接,点击谷歌“stackexchange家庭作业”和文本上方的投票箭头鼠标。我在“字段列表”中得到1054-未知列“a.atd-id”,所以您的出席人数没有atd id列?用*看,是因为我用了-而不是下划线?我尝试了在引号内使用atd id更改列的名称,将-更改为“选择e.*,a.atd\U id,a.user\U id,a.events中的来宾e LEFT加入a.event\U id=e.event\U id,其中a.user\U id=1 ORDER BY event\U date\U time DESC;作品
$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;