2015-02-23 63 views
1

我有兩個表的部分記錄,如圖1:需要從2個表

enter image description here

我需要這樣的結果:

enter image description here

我加入試過,但我無法得到所需的結果。

SELECT 
    company_info.t_id, 
    company_info.company_name, 
    company_info.remark, 
    tender.company_selected, 
    company_info.company_document 
FROM 
    company_info 
LEFT OUTER JOIN 
    tender 
ON company_info.t_id = tender.t_id; 

注:它顯示公司文件了兩行,但我需要它僅適用於選定的公司。請檢查快照2以供參考。

+0

應用'第一臺左加入第二table'試一下 – 2015-02-23 07:19:57

+0

你能告訴你已經嘗試查詢? – 2015-02-23 07:25:23

回答

0

此代碼工作

SELECT company_info.t_id, company_info.company_name, company_info.remark, 
CASE WHEN tender.company_selected =company_info.company_name THEN tender.company_selected ELSE '' END, 
CASE WHEN tender.company_selected =company_info.company_name THEN company_info.company_document ELSE '' END FROM 
company_info LEFT OUTER JOIN tender ON company_info.t_id = tender.t_id 
0
SELECT 
    company_info.t_id, 
    company_info.company_name, 
    company_info.remark, 
    tender.company_selected, 
    company_info.company_document 
FROM 
    company_info 
LEFT OUTER JOIN 
    tender 
ON company_info.t_id = tender.t_id; 
+0

它在兩行都顯示公司文檔,但我只需要選中的公司。請檢查快照2以供參考。 – SJSSoft 2015-02-23 07:47:06

+0

然後在選擇部分使用: ** CASE WHEN tender.company_selected = '' 然後 '' ELSE company_info.company_document END **(這會佔據** ** company_info.company_document在我的代碼以上)。請注意,我正在從內存中寫入,而沒有真正檢查代碼,但現在應該能夠弄清楚這一點。 – dust 2015-02-23 07:55:27

+0

我對sql不太熟悉,請給我確切的查詢。我正在嘗試3個小時,每件事都在我腦海中混亂。感謝您的迴應。 – SJSSoft 2015-02-23 07:56:51

0

一個left join應該做的伎倆:

SELECT a.t_id a.company_name, a.remark, 
      b.company_selected, b.company_document 
FROM  company_info a 
LEFT JOIN tender b ON a.t_id = b.t_id 
0

這將讓你你在找什麼:

SELECT c.t_id, 
     c.company_name, 
     c.remark, 
     IFNULL(t.company_selected,'') as company_selected, 
     CASE WHEN t.company_selected IS NULL THEN '' ELSE c.company_document END AS company_document 
FROM company_info c LEFT JOIN 
    tender t ON c.t_id=t.t_id AND c.company_name=t.company_selected 

說明:

這個查詢會做如下:

  • 從公司表中選擇t_id,comapany_name,remark
  • 從投標表中選擇公司名稱。如果沒有記錄,則此列將爲空。
  • 如果在投標表中沒有記錄,則此欄爲空,否則從公司表中選擇company_document