Почему я получаю синтаксическую ошибку в MySQL? - PullRequest
0 голосов
/ 18 октября 2018
SELECT ID, Name
FROM Members
WHERE ID IN 
    (SELECT Member ID 
     FROM Team Member 
     WHERE Team ID IN 
          (SELECT ID 
            FROM Teams 
            WHERE Year = 2012 AND Country = 'Phillipines'))

Когда я ввожу этот запрос в phpmyadmin, я получаю ошибку # 1064 о том, что у меня нет правильного синтаксиса.Как можно решить это?

Ответы [ 4 ]

0 голосов
/ 18 октября 2018

Вы можете попробовать ниже, используя join

    SELECT a.ID, a.Name
    FROM Members a inner join Team b on a.ID=b.MemberID
    inner join Teams c on b.TeamID=c.ID
    where c.Year = 2012 AND c.Country = 'Phillipines'
0 голосов
/ 18 октября 2018

Непосредственной ошибкой является WHERE Team ID IN ..., которая на самом деле должна быть WHERE TeamID IN ....Есть и другие подобные ошибки.Но мы можем попробовать переписать ваш запрос с помощью объединений, чтобы он был более читабельным и обслуживаемым:

SELECT m.ID, m.Name
FROM Members m
INNER JOIN TeamMember tm
    ON m.ID = tm.MemberID
INNER JOIN Teams t
    ON tm.TeamID = t.ID
WHERE
    t.Year = 2012 AND t.Country = 'Phillipines';

В общем, идентификаторы в SQL должны быть одним словом без пробелов.Если Team ID на самом деле является именем столбца, то вам придется ссылаться на него в MySQL с помощью обратных галочек.Но вам следует избегать этого.

0 голосов
/ 18 октября 2018

Я думаю, что вы используете неправильное имя переменной (идентификатор участника), между ним и идентификатором не должно быть пробела.таким же образом (член команды), (идентификатор команды).Пожалуйста, убедитесь, что вы используете правильное имя для имени столбца и таблицы.

0 голосов
/ 18 октября 2018

Ваша таблица Team Member и ее столбцы Member ID и Team ID могут быть введены неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...