2014-02-18 32 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