[英]mysql select query with join not showing the results of multiple rows from the same table
我正在尝试为我的数据库创建一个搜索表单,用户可以在其中搜索客户名称,并且将显示所有这些客户地址。 我的结构看起来像这样
客户表
地址表
站点表
我将名字,姓氏或公司名称作为输入并将其存储为变量以及他们要搜索的列,然后使用以下查询来检查数据库是否符合条件
$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'];
当一个客户有多个地址时,就会发生此问题。 家庭地址和站点地址不同。 该查询将仅打印地址之一,即站点地址(第二个提交,似乎覆盖了家庭地址)
在地址表中,这两个地址都包含相同的Customer_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%')
我认为您在连接SITES时应使用LEFT OUTER JOIN。 如果您使用INNER JOIN,则会丢失其ID不在site.address_id中的ADDRESS记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.