0

我想知道是否有人可以帮助我找到从具有共同 ID 的两个表中提取数据的最有效方法。

一个简单的例子是我有两个表;具有以下字段的客户和消息:

客户 - id、名字、姓氏

消息 - customer_id,消息

关系是客户表只有一个具有唯一 id 的条目,但消息表可以为每个客户提供多条消息。

在 PHP 页面上,我想在页面顶部显示客户姓名,然后显示该客户的所有消息。

目前,我正在使用以下两个查询:

$q1 = mysql_query("SELECT * FROM customers WHERE id='123'");
while($row1= mysql_fetch_assoc($q1)){
    echo "$row1[firstname] $row1[surname]";
}

$q2 = mysql_query("SELECT * FROM messages WHERE customer_id='123'");
while($row2= mysql_fetch_assoc($q2)){
    echo "$row2[message]";
}

这是我想要实现的目标的简化版本,但我想知道是否有一种方法可以通过一个查询来做到这一点。我在这里搜索时看到了 JOIN 和 UNION 函数(但从未使用过它们),但看不到这些函数如何允许我在所有消息中只显示一次客户名称。如果这些来自一个查询并且有 10 条消息,那么客户名称将重复 10 次?

不确定我在那里是否完全理解,但任何帮助将不胜感激:)

4

1 回答 1

1

确保在两个表上都有适当的索引

SELECT customers.name,
       messages.*
  FROM customers
  LEFT JOIN messages
         ON messages.customer_id = customers.id
 WHERE customers.id = 123
于 2013-04-01T16:46:18.550 回答