проблема с INNER JOIN в MYSQL 6.3 - PullRequest
1 голос
/ 21 марта 2020

я пытаюсь объединить данные из двух таблиц, например:

Select portt.nameport, tool.weapen
From Portt 
Where  portt.toolsum - (    select count(*) 
                            From tool               
                            Group by nameport) >2
INNER JOIN tool on tool.nameport=portt.nameport;

, но есть ошибка 1064:

Error Code: 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 'INNER JOIN tool on tool.nameport=portt.nameport' at line 6

Я не понимаю, почему.

этот код без внутреннего соединения работает нормально:

Select portt.nameport
From Portt 
Where  portt.toolsum - (    select count(*) 
                            From tool               
                            Group by nameport) >2;

1 Ответ

1 голос
/ 21 марта 2020

Во-первых, этот запрос:

Select portt.nameport
From Portt 
Where  portt.toolsum - (select count(*) 
                        From tool               
                        Group by nameport
                       ) > 2;

У вас есть скалярный подзапрос . Однако, если бы можно было вернуть более одной строки, что было бы ошибкой. Я предполагаю, что вам нужен коррелированный подзапрос:

select p.nameport
from Portt p
where p.toolsum - (select count(*) 
                   from tool t          
                   where t.nameport = p.nameport
                  ) > 2;

Тогда JOIN - это оператор в предложении FROM. Весь пункт FROM должен предшествовать where. Поэтому я подозреваю, что вы пытаетесь написать:

select p.nameport
from Portt p join
     tool t
     on t.nameport = p.nameport
where p.toolsum - (select count(*) 
                   from tool t          
                   where t.nameport = p.nameport
                  ) > 2;
...