多表查询为什么失败?“该特定字段 'Product' 可以参考 SQL 语句中 FROM 子句列表中的多个表。”

还不够格啊 2007-10-31 06:21:26
VC6.0 + msado15.dll

要统计一个数据库中的多个表 T1,T2,T3,T4 中字段名为 Product 的所有不重复的记录,用:

pRecordset.CreateInstance( __uuidof(ADODB::Recordset) );

CString sSource = "SELECT DISTINCT Product FROM T1,T2,T3,T4";
HRESULT hr = pRecordset->Open( _variant_t(sSource), m_pConnection.GetInterfacePtr(), ADODB::adOpenStatic, ADODB::adLockOptimistic, ADODB::adCmdText );

执行到 Open 语句时,出现错误“该特定字段 'Product' 可以参考 SQL 语句中 FROM 子句列表中的多个表。”。


如果只在一个表中查询,则没有问题。

...全文
1162 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Elysium 2007-11-01
  • 打赏
  • 举报
回复
在Product前增加表名,如select distinct T1.Product...
liee96 2007-11-01
  • 打赏
  • 举报
回复
1楼写的那个就是你需要的
SELECT DISTINCT Product FROM
(
SELECT DISTINCT Product FROM T1
union SELECT DISTINCT Product FROM T2
union SELECT DISTINCT Product FROM T3
union SELECT DISTINCT Product FROM T4
)
fulingwei 2007-11-01
  • 打赏
  • 举报
回复
多个表中都有的字段应该这样: 表名.属性名 ,example: T1.Product
还不够格啊 2007-11-01
  • 打赏
  • 举报
回复
我改成

SELECT DISTINCT T1.Product,T2.Product,T3.Product,T4.Product FROM T1,T2,T3,T4

没有出错,但查询到的记录数为0.
还不够格啊 2007-11-01
  • 打赏
  • 举报
回复
我的问题是这样的:

一个数据库中有4个表T1,T2,T3,T4,每个表中都有名为Product的字段。每个表中Product字段下有不同的记录,例如:

T1 Product: P1 P1 P1
T2 Product: P2 P2 P2
T3 Product: P1 P3 P4
T4 Product: P2 P4 P8

我要得到所有表中Product下不重复的记录,即要得到 P1,P2,P3,P4,P8 这样一个结果。

请问该如何写SELECT语句?

liee96 2007-10-31
  • 打赏
  • 举报
回复
楼主的错误在于T1,T2,T3,T4都有product字段,所以数据库不知道该列出哪个表的Product字段的内容.

另外不太明白"所有不重复的记录"是指什么?是指那些Product只在某一个表中有一条的那些记录吗? 楼上列出了所有的product的内容.
guanwl 2007-10-31
  • 打赏
  • 举报
回复
SELECT DISTINCT Product FROM (SELECT DISTINCT Product FROM T1 union SELECT DISTINCT Product FROM T2 union SELECT DISTINCT Product FROM T3 union DISTINCT Product FROM T4)

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧