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那么你能在你的问题中加入一些样本数据吗?我相信这应该是你描述它的方式。