select
Gid, Class, GroupName
from
Class, Group1
where
Class.Gid = Group1.Gid
此查询在DB中正确执行但在程序中出错?
答案 0 :(得分:2)
两个表中都有相同的列,因此请为每列提供别名 像
用户内部联接,这种类型的编码是旧式的。
select
g1.Gid,
cl.Class,
g1.GroupName
from
Class cl
inner join Group1 g1
on cl.Gid=g1.Gid
答案 1 :(得分:2)
由于两个表中都存在字段Gid
,您必须指定要选择的字段。因此,使查询工作的minium更改将是:
select Class.Gid,Class,GroupName from Class,Group1 where Class.Gid=Group1.Gid
为每个字段指定表格是一个好主意,这样可以更容易地查看数据的来源,并使查询对表格布局更改的敏感度降低。您可以使用alases来防止代码混乱使用表名。
此外,您应该使用join
关键字来连接表,在旧版本的数据库引擎中不推荐使用旧的连接方式。
select
c.Gid,
g.Class,
g.GroupName
from
Class c
inner join Group1 g on c.Gid = g.Gid
答案 2 :(得分:1)
使用表别名和正确的JOIN语法:
SELECT cl.Gid, cl.Class, gr.GroupName
FROM Class cl
INNER JOIN Group1 gr
ON cl.[Gid] = gr.[Gid];
模糊列是Gid
,因为它存在于两个表中但在SELECT列表中引用,而没有指定应从哪个表中提取。
为了便于阅读,最好使用多个字符作为别名。因此,从长期来看,“cl”和“gr”比“c”和“g”更好。
答案 3 :(得分:1)
问题是Class和Group1都有一个GID属性。使用别名来区分这两个属性:
select c.Gid, c.Class, g.Gid, g.GroupName
from Class as c
inner join Group as g on c.Gid = g.Gid
答案 4 :(得分:0)
尝试为列名本身提供别名,如下所示:
选择 c.Gid as' ClassGid',Class,GroupName,g.Gid as' Group1Gid' 从 类为c,Group1为g 哪里 c.Gid = g.Gid