這裏有一點不尋常的要求,不幸的是,這是一個糟糕的表格設計,很長一段路要走回發展道路!有條件連接根據主表字段的INSTR來確定表格
我有3個表,repairs
,staff
,technicians
的修繕表包含在登記到我的系統修復任務的所有信息。這包含一個「技術員」字段,該字段將包含工作人員(來自桌面工作人員)或外包(異地)技術員的ID(來自桌面技術人員)的ID,在後一種情況下,ID將具有「T」
所以,前綴由於後一種情況下前綴,我需要能夠抓住T和用它來確定我的SQL查詢是否需要加入表staff
或表technicians
所以,我有一個相當簡單的SQL查詢:
SELECT technicians.screenName,
repairs.turnAround, repairs.technician, repairs.dateIn, repairs.Type,
invoices.status, invoices.grossTotal
FROM repairs
LEFT JOIN invoices ON repairs.invNo=invoices.id
LEFT JOIN technicians ON technicians.id = REPLACE(repairs.technician, 'T','')
WHERE repairs.id ='REQUIRED JOB ID' ORDER BY repairs.dateIn DESC
這將工作正常,並克服所有cas的「T」前綴我有一個外包技術人員。
但是...
的ID將混合起來,如果我嘗試加入staff
表。
所以我需要一個條件加入其中,比如:
LEFT JOIN
WHEN instr(repairs.technican,'T') > 0 THEN
JOIN TECHNICIANS TABLE
ELSE
JOIN STAFF TABLE
END
進一步的問題,我可以在這裏看到的是,現場technicans.screenName
被列入字段列表,如果我不加入technicians
表將無法正常工作,但是,因爲staff
表包含一個字段screenName
,如果我加入該表,如果我有一個不明確的字段名稱screenName
而沒有表前綴,它應該工作不應該嗎?
編輯:我應該補充一點,上面的條件連接示例不起作用!
抱歉地說,但你可以請把DB模式上http://sqlfiddle.com –