mysql select query with join不显示同一表中多行的结果

mysql select query with join不显示同一表中多行的结果,mysql,database,relational-database,Mysql,Database,Relational Database,我正在尝试为我的数据库创建一个搜索表单,用户可以在其中搜索客户名称,并显示所有客户地址。我的结构是这样的 客户表 身份证 名字 姓 公司名称 地址表 身份证 第1行 邮政编码 城镇 客户识别码 站点表 身份证 地址 注释 我将第一个、最后一个或公司名称作为输入,并将其作为一个变量存储在他们希望搜索的列中,然后使用以下查询检查数据库中的匹配条件 $data = mysql_query("SELECT * FROM customer INNER JOIN address ON custo

我正在尝试为我的数据库创建一个搜索表单,用户可以在其中搜索客户名称,并显示所有客户地址。我的结构是这样的

客户表

  • 身份证
  • 名字
  • 公司名称
地址表

  • 身份证
  • 第1行
  • 邮政编码
  • 城镇
  • 客户识别码
站点表

  • 身份证
  • 地址
  • 注释
我将第一个、最后一个或公司名称作为输入,并将其作为一个变量存储在他们希望搜索的列中,然后使用以下查询检查数据库中的匹配条件

$data = mysql_query("SELECT * FROM customer INNER JOIN address ON customer.ID = address.Customer_ID INNER JOIN sites ON address.ID = sites.address_ID WHERE upper(customer.$field) LIKE'%$query%'") ;/
我使用

    while($results = mysql_fetch_array($data)){
            echo "<br>"; 
            echo $results['First_Name']; 
            echo " "; 
            echo $results['Surname']; 
            echo $results['town']; 
            echo " "; 
            echo $results['postcode'];
while($results=mysql\u fetch\u array($data)){
回声“
”; echo$results['First_Name']; 回声“; echo$results[‘姓氏’]; echo$results['town']; 回声“; echo$results['postcode'];
当一个客户有多个地址时会出现问题。家庭地址和站点地址不同。查询将只打印其中一个地址,即站点地址(第二次提交,似乎会覆盖家庭地址)


在地址表中,这两个地址都包含相同的客户ID,如何让它们都显示出来而不是只显示一个?

您需要使用搜索查询来查找客户,然后返回并获取该特定客户的所有记录。作为子查询这样做应该可以做到:

SELECT ...
FROM Customer
INNER JOIN address ON customer.ID = address.Customer_ID 
INNER JOIN sites ON address.ID = sites.address_ID 
WHERE Customer.ID IN (SELECT ID 
                      FROM customer 
                      INNER JOIN address ON customer.ID = address.Customer_ID 
                      INNER JOIN sites ON address.ID = sites.address_ID 
                      WHERE upper(customer.$field) LIKE'%$query%')

我认为在连接站点时应该使用左外部联接。如果使用内部联接,则会丢失Id不在站点中的地址记录。ADDRESS\u Id。

我在使用this@dan那么你能在你的问题中加入一些样本数据吗?我相信这应该是你描述它的方式。