带有内部连接的别名
Alias with inner joins
我有以下查询,其中 '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
有什么解决办法吗?
试试下面的查询
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'
学习使用 table 别名!
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 *
。
解决方法如下:
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
我有以下查询,其中 '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
有什么解决办法吗?
试试下面的查询
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'
学习使用 table 别名!
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 *
。
解决方法如下:
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