2014-01-25 5 views
1

Im довольно новый для SQL, и я использую JDBC. Теперь у меня есть то, что кажется как ошибка синтаксиса, но я не могу найти проблему ... ОшибкаОшибка синтаксиса MySQL? JDBC

SQL-Exception in DBConnection.executeSelectQuery() SQLException: 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 'a, (SELECT a.id AS id, a.startpunkte+t1.pkte AS pkte FROM arzt a, (SELECT a.i' at line 1 SQLState: 42000 VendorError: 1064

в то время как мое заявление

SELECT a.id, a.ansage_id, a.name, a.vorname, a.strasse, a.hausnummer, a.stadt, a.aktiv, a.wertung, t.pkte 
FROM arzt a, (SELECT a1.id AS id, a1.startpunkte+t1.pkte AS pkte 
      FROM arzt a1, (SELECT a2.id, SUM(t.punkte) AS pkte 
      FROM arzt a2, dienst d, tag t 
      WHERE d.arzt_id = a2.id 
      AND t.id = d.tag_id 
     ) AS t1 
    WHERE t1.id=a1.id 
    ) AS t 
WHERE a.id = t.id 
ORDER BY a.name 

Я надеюсь, что кто-то мог Помоги мне. Извините за мой плохой английский.

+2

Вы использовали 'arzt a,' тот же самый алис на двух местах, чтобы изменить его как уникальное, как 'arzt a'' arzt b' !! –

+1

Mysql или SqlServer? Ошибка, по-видимому, с помощью MySql, поэтому я переместил тег SqlServer – StuartLC

+0

Фактически 'a' используется 3 раза, а также двойной' t' псевдоним – Alexander

ответ

0

Вам необходимо сгруппировать по artz.id, чтобы SUM() работал корректно. Я также изменил WHERE JOINS на INNER JOINS, чтобы улучшить читаемость:

SELECT a.id, a.ansage_id, a.name 
FROM arzt a 
    INNER JOIN 
    (SELECT a.id AS id, a.startpunkte+t1.pkte AS pkte 
     FROM arzt a INNER JOIN 
     (SELECT a.id, SUM(t.punkte) AS pkte 
      FROM arzt a 
       INNER JOIN dienst d 
       ON d.arzt_id = a.id 
       INNER JOIN tag t 
       ON t.id = d.tag_id 
      GROUP BY a.id) AS t1 
     ON t1.id=a.id) AS t 
    ON a.id = t.id 
ORDER BY a.name; 

Dataless fiddle here

Как уже упоминалось другие, повторное использование те же псевдонимы подзапросов сбивает с толку. Я обновился в Fiddle.

+0

Это действительно сработало. (t дал мне пустой набор результатов), но все равно спасибо, я думаю, что есть только данные отсутствуют – user3235683

+0

Если вы можете предоставить данные в скрипт sql, это поможет отладить. – StuartLC

Смежные вопросы