0

我有这些表:

我正在尝试通过使用连接表来获取article_id, article_name, article_title, article_descriptionarticle_date获取。articlesusernameusersuser_articles

我试过这段代码:

SELECT E.article_id, E.article_title, E.article_description, E.article_date, u.username
FROM articles AS E, users as u
INNER JOIN user_articles as A ON A.article_id = E.article_id
INNER JOIN users as u2 ON u2.user_id = A.user_id
WHERE E.article_status = 1

我收到此错误消息:

Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "E.article_id" could not be bound.

在此处输入图像描述

我正在使用 SQL Server 2012 Express。

4

3 回答 3

2

您不能从一个表中选择并在另一个表上应用联接。试试这个查询:

SELECT E.article_id, E.article_title, E.article_description, E.article_date, u.username
FROM articles AS E
    INNER JOIN user_articles as A ON A.article_id = E.article_id
    INNER JOIN users as u ON u.user_id = A.user_id
WHERE E.article_status = 1
于 2013-04-21T00:06:01.163 回答
2

问题是你混合了 JOIN 类型,你有逗号分隔的隐式 JOIN,然后是显式 JOIN。您的代码应该是:

SELECT E.article_id, 
  E.article_title, 
  E.article_description, 
  E.article_date, 
  u.username
FROM articles AS E
INNER JOIN user_articles as A 
  ON A.article_id = E.article_id
INNER JOIN users as u
  ON A.user_id = u.user_id
WHERE E.article_status = 1;
于 2013-04-21T00:06:48.970 回答
0

我在想为什么你甚至需要这样的表格:users_articles?将名为 (article_author) 的列添加到使用用户 ID 填充的文章表中不是更有效吗?然后你可以内部加入那个值。只是说

于 2013-04-21T00:42:27.263 回答