【问题标题】:Selecting data from mysql table and related data from another to join them从 mysql 表中选择数据并从另一个表中选择相关数据以加入它们
【发布时间】:2012-04-24 04:27:21
【问题描述】:

我查看了其他问题和答案,但仍然不明白是什么让我来到这里。

我有一个数据库两个表。让我们说数据库中的 table1 和 table2。

我希望从 table1 中获取所有信息,并且仅从 table2 中获取与 table1 中正确行重合的一列。

我知道错误的例子:

SELECT table1.*, table2.time_stamp FROM table1, table2 
    WHERE table1.ticket_id=$var AND table1.user_id = table2.user_id

基本上从table1中选择数据,然后使用所选表中的值从table2中获取相关数据并将它们连接起来以将它们输出为一个mysql_query。我敢肯定它很简单,而且以前有人问过。

编辑:

我没有收到错误。 SQL 只是返回注释。日志形式为:

$sqlResults = mysql_query("SELECT table1.* FROM table1 WHERE table1.ticket_id=$var")

while($rowResult = mysql_fetch_array( $sqlResults )) {

$userID = $rowResult['user_id'];

$sqlResults2 = mysql_query("SELECT table2.time_stamp FROM table2 
    WHERE table2.user_id=$userID")

}

我想将它组合成一个 sql 语句,这样我就不必为 table1 的每一行都点击 table2

【问题讨论】:

  • 嗯,这个查询似乎是对的......你到底在找什么???更好的解决方案?
  • 你从 MySQL 得到的错误是什么?另外,$var 的值是多少?你可能应该逃避它
  • 我没有得到 sql 返回,我不担心转义变量,因为这不是我没有包含它的问题。尽量保持代码简洁明了

标签: php mysql


【解决方案1】:

使用JOIN 将table2 中的行绑定到table1 中的行:

SELECT t1.*, t2.time_stamp FROM table1 t1 
JOIN table2 t2 ON t1.user_id = t2.user_id
WHERE t1.ticket_id=$var

【讨论】:

  • 在我看来是最好的答案。 JOIN 一开始可能会很困难,当你理解它们时,你将永远不会接受其他任何东西......
  • 我对此进行了测试并收到了此错误 - Not unique table/alias: 'table2'
  • 查看我的编辑,当table1与table2相同时,您需要为表分配别名
  • 太棒了!!!问题不在于您的代码,只是 table1 与 table2 相同...您应该在原始答案中这么说;)
猜你喜欢
  • 2014-06-12
  • 1970-01-01
  • 2012-04-21
  • 2021-12-30
  • 1970-01-01
  • 2013-05-25
  • 2013-12-23
  • 2014-02-17
  • 1970-01-01
相关资源
最近更新 更多