【问题标题】:Inner Join not working properly in Mysql tables内部联接在 Mysql 表中无法正常工作
【发布时间】:2015-10-29 07:11:57
【问题描述】:

我有两张桌子; 1. 细节,2. 附加

这些表的结构如下:

Details:
| id | name | start_date | end_date | city | ....

Additional:
| id | event_id | ratings | reviews | visits | total_points | ...

这里,'details' 中的 id 和 'additional' 中的 'event_id' 具有相同的值,所以我可以连接两个表。在 details 我有 26 列,在 Additional 我有 18 列。根据从用户那里收到的评论和评分以及页面上的总访问量,我给他们积分,最终添加到 total_points 字段中。因此,当我从这些表中获取数据时,我首先按城市名称、开始日期和结束日期对它们进行排序,然后检查它们获得的总点数并按降序排列(最好到最差)。

到目前为止我所做的如下:

$con->query("SELECT * FROM details INNER JOIN 附加 ON details.id = additional.event_id WHERE city = '$currentLocation' AND (sDate ='$todayDate' OR (sDate = '$todayDate')) ORDER BY additional.total_points*1 DESC");

但它没有正确获取行,详细信息中的 id 与附加中的 id 匹配,而不是 event_id。

任何帮助将不胜感激!

TIA

【问题讨论】:

  • 你能展示一些示例输入和输出吗?该查询看起来应该可以工作。
  • 嗨,蒂姆,感谢您的关注,但我刚刚解决了这个问题。问题是,在两个表中都有一个名称相同的字段id。所以当我打印id 时,它从additional 中获取价值,而不是从details 中获取价值。所以我改变了它,现在我的代码很好。
  • 请将其发布为您的问题的答案并将其标记为正确。

标签: inner-join


【解决方案1】:

查询绝对没问题,但问题是,两个表都有一个同名的列,即id。因此,当我们从数据库中打印值时,id 列从additional 表中获取值,而不是从details 中获取值。

所以最好更改additional表中的列名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多