2016-11-18 30 views
1

您好,查詢:加入,Concat的,但得到的結果

我在這裏有一個問題。我正在尋找一個搜索選項。我可以搜索名字,姓氏,公司名稱和編號。我只想顯示左側和客戶信息,這些信息是通過以下查詢獲得的。但是,如果客戶沒有標牌,則不會顯示客戶。有沒有辦法阻止?

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+"%' 

UPDATE:試圖給定的解決方案後,它根本找不到任何東西。

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包含什麼。查詢正在搜索的行不存在。
+0

'fa_kennzeichen' numberplate? – CGritton

+0

是的。這是號碼牌。 – Synthiatic

+0

然後,一些示例數據可能會有所幫助,並提供未返回記錄的示例。 – CGritton

回答

0

如何:

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+"%' 
0

OUTER JOIN是一個語法錯誤。應該是LEFT OUTER JOIN,或縮寫爲LEFT JOIN。

SELECT DISTINCT A.* 
FROM adressen AS A 
LEFT 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+"%'