【问题标题】:Unable to query between three tables三张表之间无法查询
【发布时间】:2015-01-11 20:08:44
【问题描述】:

我试图查询两个表并显示一些结果,但到目前为止还没有运气。 这是我尝试的 sql 查询

SELECT * FROM tables  
     JOIN reservation ON reservation.selected = m.table_id
     WHERE table_rest = '$rest_id'
     AND reservation.status is NULL

这个想法是显示所有表格。那些带有status 的表格将不会显示。目前这适用于三张桌子,即一张中间,但我不想有中间桌子。这就是我努力的原因。这是当前正在运行的查询

SELECT m.*
        FROM tables m
        JOIN table_rest mr ON m.table_id = mr.table_id
        LEFT JOIN reservation ON reservation.selected = m.table_id
        WHERE rest_id = '$rest_id'
        AND reservation.status is NULL

更新: 这是目前的结构 我想删除table_rest 表。我在tables 中有table_rest 列,其中包含restaurant_id。我希望现在有点清楚了?

【问题讨论】:

  • 你的问题是......?
  • 工作查询有一个LEFT JOIN,而另一个有一个[INNER] JOIN,我也认为table_restrest_id 之间存在差异,尽管还不清楚哪个他们所属的表。您的命名似乎不太一致。
  • 等一下.. 我会展示我到底想做什么

标签: mysql sql tsql


【解决方案1】:

试试这个,我想,tablesreservation 中的匹配列是 table_id,所以在该列上添加连接

SELECT m.table_id, table_name, table_image, table_image_big, table_description 
FROM tables m 
LEFT JOIN reservation ON reservation.selectedTable = m.table_id 
WHERE table_rest = '$restaurant_id' 
AND reservation.status is NULL";

【讨论】:

  • 我删除了JOIN table_rest 中的第二个表,并在第一个表tables 列中添加了table_rest 这就是我将table_rest 放在where 子句中的原因
  • 我会画出来的……等一下
  • 修改后的答案...表格中的匹配列和预订是table_id?对
  • 在表中是table_rest,在预订中是table_id
  • 你可以为表格和预订添加示例数据,以及预期的输出......现在有点困惑哪一列有哪个值?
猜你喜欢
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 2020-08-04
相关资源
最近更新 更多