2014-02-18 46 views
0

我有這個查詢,顯然它有問題? 我想加入ficesmems,所以我可以有ficeID以及mems(這些查詢單獨工作)的所有結果。我究竟做錯了什麼?在數據庫中測試時查詢錯誤SQL

SELECT * 
    FROM mems 
    WHERE deleted <> -1 
ORDER BY sort_mems 
     LEFT JOIN SELECT ficeID 
        FROM fices 

結果:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN SELECT ficeID FROM offices LIMIT 0, 30' at line 1 
+1

'Join'語句應該總是位於'where'子句之前,'from'之後 –

回答

1
  • 你有ORDER BYJOIN條款。你應該把它放在FROM
  • 我建議你定義的LEFT JOIN
  • 還有一個條件,我建議你圍繞着你與支架的臨時表:

    SELECT m.*, t1.officeID 
        FROM members m 
         LEFT JOIN offices t1 
            ON m.memberID = t1.memberID 
        WHERE m.deleted <> -1 
    ORDER BY m.sort_membername; 
    
+0

我得到這個:#1248-每個派生表都必須有自己的別名 – TopDecker

+0

你的SQL語法有錯誤;檢查與您的MySQL服務器版本對應的手冊,以便在第一行使用'WHERE deleted <> -1 ORDER BY sort_mems LIMIT 0,30'時使用的正確語法 – TopDecker

+0

@TopDecker提供'SHOW CREATE TABLE mems;'和'SHOW CREATE TABLE fices;'輸出,我會給你你需要的查詢 – Alexander

1

是的,你有錯了地方的LEFT JOIN(它應該在你的FROM條款之後,你似乎也缺少一個加入標準(ON部分,這告訴數據庫這些表是如何相關的):

SELECT * 
FROM mems m 
LEFT JOIN fices f 
    ON m.??? = f.??? 
WHERE deleted <> -1 
ORDER BY sort_mems 
+0

我不明白m。應該或代表你能解釋一下嗎? – TopDecker

+0

呃,其中之一,我有一個錯字...其中一個應該是'f'。但是,'ON'子句是一個聲明,可以讓你定義兩個表是如何關聯的。例如,如果你有一個「員工」表,並且每個員工都屬於某個公司的「部門」,並且你想要從這兩個表中獲取數據,則可以執行如下操作:SELECT ... FROM employee e JOIN department d ON e.dept_id = d.id WHERE ...' – bhamby

+0

Ohhh我現在明白了我會盡力並在一秒內報告 – TopDecker