【问题标题】:SELECT * FROM INNER JOIN - SELECT FROM TWO TABLES [closed]SELECT * FROM INNER JOIN - 从两个表中选择 [关闭]
【发布时间】:2019-09-20 00:12:48
【问题描述】:
TABLES
***************************************
| events           | attendance       |
***************************************
| event-id         | atd-id           |
| event-name       | event-id         |
| event-date-time  | user-id          |
| event-address    | guests           |
|                  |                  |
***************************************

event-date-time 是(日期时间)格式。

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

$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;

【问题讨论】:

  • ORDER BYWHERE 之后。您还应该学习使用参数。
  • 修正order by子句后出现什么错误。
  • 请在代码问题中给出minimal reproducible example--剪切&粘贴&可运行代码;具有期望和实际输出(包括逐字错误消息)的示例输入(作为初始化代码);标签和版本;明确的规范和解释。这包括您可以提供的最少代码,即您显示的代码可以通过您显示的代码扩展为不可以。 (调试基础。)对于包含 DBMS/产品和 DDL 的 SQL,其中包括约束和索引以及表格格式的基表初始化。 PS你有一个语法错误。阅读语法和手册。显示组成子表达式是好的。
  • 查看 How to Ask,其他 help center 链接,点击谷歌搜索“stackexchange 作业”和投票箭头鼠标悬停文本。

标签: php mysql sql join


【解决方案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 之前。

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

【讨论】:

  • 我得到 #1054 - '字段列表'中的未知列 'a.atd-id'
  • 所以你的出席没有atd-id 栏目?使用* 看看,
  • 确实如此,是因为我使用的是 (-) 还是下划线 (_)?我在引号内尝试了atd-id
  • 更改列名,将 (-) 更改为 (_)。
  • 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 = 1 ORDER BY event_date_time DESC; 作品
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多