-
我有以下MySQL查询:
-
SELECT CONCAT(COALESCE(customer.last_name,''), ' ', COALESCE(customer.first_name,''))
as fullName,
customer.first_name, customer.last_name, customer.email,
address.phone, customer.customer_id
FROM repairs
LEFT JOIN customer
ON customer.customer_id = repairs.customer_id
LEFT JOIN address
ON address.address_id = customer.address_id
WHERE CONCAT(COALESCE(customer.first_name,''), ' ', COALESCE(customer.last_name,'')) LIKE :search
OR CONCAT(COALESCE(customer.last_name,''), ' ', COALESCE(customer.first_name,'')) LIKE :search
OR customer.business_name LIKE :search OR customer.email LIKE :search OR address.phone LIKE :search
GROUP BY fullName
ORDER BY fullName ASC
LIMIT 15
这里还有一些数据:
(客户表)
customer_id | last_name | first_name | email | address_id
1 Vandalay Art van@gmail.com 2
2 Vandalay Art van123y@yahoo.com 3
3 Dude George george79@gmail.com 4
4 Christian Forge chrfrg@gmail.com 5
(地址表格)
address_id | address | phone
2 1st Art Institute, 23 +44392031
3 24 Oak Street, Berkl. +62342354
4 51st Main, California +662341232
(维修表格)
repair_id| customer_id | other fields
1 1 ...
2 1 ...
3 1 ...
4 2 ...
5 2 ...
6 1 ...
7 3 ...
8 3 ...
9 2 ...
我使用的表格是维修,客户和地址。
我在 customer.last_name 和 customer.first_name 上使用CONCAT生成我正在搜索的全名和COALESCE,因为有时其中一个是NULL。
如果恰好有2个人使用相同的姓名,但不同的地址和电子邮件,我的查询将仅显示其中一个,因为我的群组在fullName上,并指向只是两个人中的一个(以及 client_id )。
我需要回复我的查询 DISTINCT 名称,但当地址/电子邮件对于同名的2人不同时,我需要包含两个人(显示2个不同的地址) 。所以我猜没有Group BY ......而是使用DISTINCT。
希望输出样本:
1 Vandalay Art van@gmail.com
2 Vandalay Art van123y@yahoo.com
3 Dude George george79@gmail.com
4 Christian Forge chrfrg@gmail.com
..如此独特的名字,但如果人们碰巧有相同的名字,我需要重复,但实际上是2个不同的人"
到目前为止,我只获得了一个艺术万代莱,因为我是BY全名......
感谢任何帮助。