【发布时间】:2012-01-09 04:25:33
【问题描述】:
我有两张桌子:
一个表是一个“目录”,其中存储了 pageID、tableLocation 和 pageName。
tableLocation 是存储该页面内容的位置(我有一个网站的多个区域......无论如何)。
我需要从“tableLocation”获取数据,所以我想做一个 JOIN,这样我就可以获得目录和所需表所需的所有数据。当然,如果没有“tableLocation”数据,我不知道要查看哪个表。我正在尝试使用以下 SQL 语句:
SELECT p.pageID,p.tableLocation,p.pageName
FROM pageCatalog p
INNER JOIN
(SELECT tableLocation
FROM pageCatalog
WHERE pageName='PAGENAME') d
ON (p.pageID = d.pageID)
WHERE p.pageName='PAGENAME'
我收到一条错误消息,“列名 'pageID' 无效”
如果我用特定的 tableLocation 替换第二个 SELECT ,它就可以工作。所以错误在于“INNER JOIN(SELECT ...”但我不确定问题是什么。有什么想法吗?
---------- 编辑 ---------- 更多细节:
例如 pageCatalog 有这个
pageID tableLocation pageName
167 tableA page1
12 tableB page2
250 tableC page3
在这个例子中,我有 3 个表。我需要从 table* 中提取数据,但我首先需要 tableLocation。 tableB 有 pageTitle。我需要连接这两个表才能获取该数据。
【问题讨论】:
-
我知道我已经通过 p.tableLocation 获得了“tableLocation”。我尝试使用别名作为表名,但这引发了其他错误。
-
从看起来你试图加入一个表本身,对吗?你想通过这样做来完成什么?此外,您收到 Invalid column name 错误的原因可能是您没有在子查询中选择 pageID 列。
-
感谢安德斯。很抱歉这种格式。
-
我有一个存储pageID、pageName的表(table1)和存储页面数据的表(table2)。我想从 tableLocation 指定连接的表中获取 pageID、pageName 和内容。我需要第二个 SELECT 作为“tableLocation”来获得我需要的东西。
-
我用更多信息编辑了这个问题。布赖恩的建议似乎没有把我带到我想要的地方。
标签: sql database select inner-join