2015-11-02 48 views
0

我是mysql查詢中的IF語句的新手。我按照this answer寫我自己的查詢。通過在SELECT中使用IF與JOIN獲取錯誤mysql

基本上我試圖選擇數據如果Base table "Peripheral"屬性然後加入與外設表基表,否則加入基本表與其他表

我已經試圖建立以下查詢:

SELECT * FROM CC_FIRMWARE 

INNER JOIN 

IF(CC_FIRMWARE.Device_Class = "Peripheral", 
    RC_Peripheral_Type ON RC_Peripheral_Type.Id = CC_FIRMWARE.Device_Type_Id, 
    RC_Box_Type ON RC_Box_Type.Id = CC_FIRMWARE.Device_Type_Id) 

WHERE CC_FIRMWAER.Id = 4; 

我收到語法錯誤。 unexpected 'IF' (if)

+1

如果是選擇字段而不是表 – scaisEdge

回答

0

我想你想是這樣的:

SELECT   * 
FROM   CC_FIRMWARE 
LEFT JOIN  RC_Peripheral_Type 
      ON RC_Peripheral_Type.Id = CC_FIRMWARE.Device_Type_Id 
      AND CC_FIRMWARE.Device_Class = "Peripheral" 
LEFT JOIN  RC_Box_Type 
      ON RC_Box_Type.Id = CC_FIRMWARE.Device_Type_Id 
      AND CC_FIRMWARE.Device_Class <> "Peripheral" 
WHERE   CC_FIRMWARE.Id = 4 

這是很基本的東西,我覺得你應該對SQL和/或設置基於操作的基本知識閱讀起來。如果你考慮邏輯,你會發現你的查詢毫無意義;對於某些行需要連接表,對於其他記錄不同的表,這不起作用。

+0

謝謝☺你說得對,從其他表中獲取行時我無法正常工作,我需要把它們取出來。我用'UNION'方法解決了這個問題! – mumair