Псевдоним с внутренними объединениями - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть следующий запрос, который имеет неоднозначное поле для «ID», я знаю, что мне нужно использовать псевдоним, но, похоже, что-то не так во втором примере, когда я использую псевдоним

SELECT * FROM 01users 

INNER JOIN 01modules ON 01modules.Modules_UserID = 01users.ID 

INNER JOIN 01articles ON 01modules.ID = 01articles.ModuleID

WHERE User =  '$user' AND ID = '$moduleid'

ORDER BY WeekID ASC     

Я следовал за некоторыми примерами онлайн и получаю сообщение об ошибке во второй строке.

SELECT t1.ID

FROM 01users AS t1

INNER JOIN 01modules ON 01modules.Modules_UserID = t1.ID 

INNER JOIN 01articles ON 01modules.ID = 01articles.ModuleID

WHERE User =  '$user' AND ID = '$moduleid'

ORDER BY WeekID ASC

Любые решения, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Научитесь использовать псевдонимы таблиц!

SELECT *
FROM 01users u INNER JOIN
     01modules m
     ON m.Modules_UserID = u.ID INNER JOIN
     01articles a
     ON m.ID = 01artacles.ModuleID
WHERE u.User =  '$user' AND m.ID = '$moduleid'
ORDER BY ?.WeekID ASC

Вы должны квалифицировать все ссылки на столбцы, включая WeekId - для этого ?.

Вы должны также перечислить столбцы, которые вы хотите явно, вместо использования select *.

0 голосов
/ 08 марта 2019

Вот решение:

SELECT u.User, m.ID, a.Title, a.Topic, a.Text, a.WeekID, a.DatePosted, a.DateDue, a.TimePublished, a.File1, a.ID AS ArticleID
FROM 01users as u 
INNER JOIN 01modules AS m ON m.Modules_UserID = u.ID 
INNER JOIN 01articles AS a ON m.ID = a.ModuleID
WHERE User =  '$user' AND m.ID = '$moduleid'
ORDER BY WeekID ASC
0 голосов
/ 28 февраля 2019

Попробуйте запрос ниже

SELECT t1.ID
FROM 01users AS t1
INNER JOIN 01modules ON 01modules.Modules_UserID = t1.ID 
INNER JOIN 01articles ON 01modules.ID = 01articles.ModuleID
WHERE User =  '$user' AND t1.ID = '$moduleid'
ORDER BY WeekID ASC

Вам также необходимо использовать псевдоним в предложении where.

Эта строка

WHERE User =  '$user' AND ID = '$moduleid'

Изменено на это

WHERE User =  '$user' AND t1.ID = '$moduleid'
...