【发布时间】:2017-04-02 11:51:06
【问题描述】:
您好,
我在这里遇到了问题。我正在研究一个搜索选项。我可以搜索名字、姓氏、公司名称和车牌。我只想显示左侧以及客户信息,这是我通过以下查询获得的。但是,当客户没有车牌时,不会显示客户。有没有办法防止这种情况发生?
SELECT DISTINCT A.*
FROM adressen AS A
OUTER JOIN fahrzeuge AS F
ON F.fa_kunden_id = A.ad_id
WHERE CONCAT(coalesce(A.ad_name), coalesce(A.ad_vorname),coalesce(A.ad_firma), coalesce(F.fa_kennzeichen)) LIKE '%"+wndHauptfenster.textfield_suche.Text+"%'
我也尝试过使用 IFNULL,但是,这将导致“无结果”,即使对于有汽车的客户也是如此:
SELECT DISTINCT A.*
FROM adressen AS A
OUTER JOIN fahrzeuge AS F
ON F.fa_kunden_id = A.ad_id
WHERE CONCAT(coalesce(A.ad_name), coalesce(A.ad_vorname),coalesce(A.ad_firma), coalesce(ifnull(F.fa_kennzeichen, 'leer'))) LIKE '%"+wndHauptfenster.textfield_suche.Text+"%'
更新:尝试给定解决方案后,它根本找不到任何东西。
SELECT DISTINCT A.*
FROM adressen AS A
OUTER JOIN fahrzeuge AS F
ON F.fa_kunden_id = A.ad_id
WHERE CONCAT(coalesce(A.ad_name, ''), coalesce(A.ad_vorname, ''),coalesce(A.ad_firma, ''), coalesce(F.fa_kennzeichen, '')) LIKE '%"+wndHauptfenster.textfield_suche.Text+"%'
Adressen 的专栏:
-
ad_vorname包含Max -
ad_name包含Mustermann -
ad_firma包含Testfirma Inc -
fa_kennzeichen不包含任何内容。查询正在搜索的行不存在。
【问题讨论】:
-
是
fa_kennzeichen车牌号吗? -
是的。那是车牌号。
-
一些示例数据可能会有所帮助,包括未返回的记录示例。
-
您使用了 coalesce(A.ad_firma) ,如果 A.ad_firma 为空,它仍将返回 NULL。因此,它似乎没有做任何有用的事情。将其更改为 coalesce(A.ad_firma, '') ,以将 NULL 交换为空字符串。这样做你不需要 IFNULL 子句
-
我仍然看不到您在哪里使用了 KickStart 建议的关键字
LEFT。这个查询也是通过 PHP 传递的还是什么?我看不出字符串%"+wndHauptfenster.textfield_suche.Text+"%可能会如何匹配我假设您想要 .text 的 VALUE。