6张表关联,出现问题

zjcdxx2000 2008-06-23 10:18:01
使用inner join 来做关联,可是出问题哎
CREATE TABLE "template"
(
template_id int4 NOT NULL,
name varchar(50),
createtime timestamp,
"type" varchar(50),
packetfilter_name varchar(50),
qos_name varchar(50),
deviceid int4,
CONSTRAINT template_id_pkey PRIMARY KEY (template_id),
CONSTRAINT fk_deviceid FOREIGN KEY (deviceid)
REFERENCES devices (deviceid) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE "template" OWNER TO "admin";

CREATE TABLE taskparameter
(
taskparamid int4 NOT NULL,
paramname varchar(50),
paramvalue varchar(256),
taskqid int4 NOT NULL,
CONSTRAINT taskparameter_pkey PRIMARY KEY (taskparamid),
CONSTRAINT fk_taskqid FOREIGN KEY (taskqid)
REFERENCES taskqueue (taskqid) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE taskparameter OWNER TO "admin";


CREATE TABLE packetfilter
(
packetfilter_id int4 NOT NULL,
name varchar(50),
activeflag varchar(50),
packetflow int4,
reverseflowflag varchar(50),
"action" int4,
service varchar(50),
fromaddress varchar(50),
toaddress varchar(50),
schedule varchar(50),
logflag varchar(50),
fullname varchar(150),
createtime timestamp,
description varchar(255),
objectid int4,
udf int4 DEFAULT 1,
CONSTRAINT packetfilter_id_pkey PRIMARY KEY (packetfilter_id)
)
WITHOUT OIDS;
ALTER TABLE packetfilter OWNER TO "admin";

CREATE TABLE objectaddress
(
address_id int4 NOT NULL,
name varchar(50),
"type" varchar(50),
ipaddress varchar(50),
subnetmask varchar(50),
ipaddressstart varchar(50),
ipaddressend varchar(50),
fullname varchar(150),
createtime timestamp,
description varchar(255),
objectid int4,
udf int4 DEFAULT 1,
CONSTRAINT address_id_pkey PRIMARY KEY (address_id)
)
WITHOUT OIDS;
ALTER TABLE objectaddress OWNER TO "admin";

CREATE TABLE objectschedule
(
schedule_id int4 NOT NULL,
name varchar(50),
"day" int4,
starttime int4,
endtime int4,
fullname varchar(150),
createtime timestamp,
description varchar(255),
objectid int4,
udf int4 DEFAULT 1,
CONSTRAINT schedule_id_pkey PRIMARY KEY (schedule_id)
)
WITHOUT OIDS;
ALTER TABLE objectschedule OWNER TO "admin";

CREATE TABLE objectservice
(
service_id int4 NOT NULL,
name varchar(50),
servicetype int4,
serviceportstart varchar(50),
serviceportend varchar(50),
protocolid varchar(50),
fullname varchar(150),
createtime timestamp,
description varchar(255),
objectid int4,
udf int4 DEFAULT 1,
CONSTRAINT service_id_pkey PRIMARY KEY (service_id)
)
WITHOUT OIDS;
ALTER TABLE objectservice OWNER TO "admin";

sql语句:

select * from

(
(
(
(
(
(packetfilter inner join objectaddress on packetfilter.fromaddress=objectaddress.name) as pt inner join objectaddress on pt.toaddress=objectaddress.name
) as pk inner join objectschedule on pk.schedule=objectschedule.name
) as ps inner join objectservice on ps.service=objectservice.name
)as pm inner join templatepacketfiltermap on pm.packetfilter_id=templatepacketfiltermap.packetfilter_id
)as pn inner join template on pn.template_id=template.template_id
可以执行,没有问题,但是我如果加了一句


select * from
(
(
(
(
(
(
(packetfilter inner join objectaddress on packetfilter.fromaddress=objectaddress.name) as pt inner join objectaddress on pt.toaddress=objectaddress.name
) as pk inner join objectschedule on pk.schedule=objectschedule.name
) as ps inner join objectservice on ps.service=objectservice.name
)as pm inner join templatepacketfiltermap on pm.packetfilter_id=templatepacketfiltermap.packetfilter_id
)as pn inner join template on pn.template_id=template.template_id
)as po inner join taskparameter on po.template_id=taskparameter.paramvalue
)
就无法执行,抱错“ERROR: column reference "template_id" is ambiguous”

奇怪了,为什么和taskparameter关联就会出问题,找不到template_id这个column呢
请大家帮忙啦!!
...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcdxx2000 2008-06-24
  • 打赏
  • 举报
回复
谢谢,搞定了,是要指定一个表
wwwwb 2008-06-24
  • 打赏
  • 举报
回复
as pn inner join template on pn.template_id=template.template_id
下一句
as po inner join taskparameter on po.template_id=taskparameter.paramvalue

template_id应该是哪个表中的,不要用SELECT *,用template_id AS 别名
再连接
zjcdxx2000 2008-06-24
  • 打赏
  • 举报
回复
我知道的,关联的时候出现了两个template_id column,可是我怎么才能去除其中之一呢,拜托!!
懒得去死 2008-06-23
  • 打赏
  • 举报
回复
You must point out the specific owner of this column.

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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