我正在编写一个搜索功能,需要查询4个表。
我需要在users
表中搜索,该表根据用户中的相应types
查询subtypes
,services offered
和id
表
例如:
users表中的一行可能是这样的:
| id | type | subtype | services_offered | first_name | last_name | contact | company |
| 1 | 1 | 2 | 47 | Gareth | Davies | g@g.com | Gazza |
types表中的一行可能是这样的:
| id | type |
| 1 | finance |
等等......
我有点工作,但由于某种原因,每个联系人返回大约30行!这是我的SQL。
SELECT
c.type, c.subtype, c.first_name, c.last_name, c.company, c.contact, c.services_provided, c.additional_information, c.date_updated, t.id, t.type, s.id, s.subtype, so.id, so.services_offered
FROM
contacts c, types t, subtypes s, services_offered so
WHERE
((c.type LIKE '%$q%' || c.subtype LIKE '%$q%' || c.first_name LIKE '%$q%' || c.last_name LIKE '%$q%' || c.company LIKE '%$q%' || c.services_provided LIKE '%$q%' || c.contact LIKE '%$q%' || c.additional_information LIKE '%$q%' || t.type LIKE '%$q%' || s.subtype LIKE '%$q%' || so.services_offered LIKE '%$q%')
AND (c.type = t.id || c.subtype = s.id || c.services_provided = so.id))
理想情况下,它只返回每个联系人中的一个!
非常感谢任何帮助!
谢谢,
答案 0 :(得分:0)
合理的猜测是您需要对结果进行分组,因此请使用
GROUP BY c.id
在查询结束时可能会这样做