SQL多表连接问题 出现错误

select GY_JBBM.NAME,GY_KSDM.KSMC,GY_YGDM.YGMC,YS_JBZD.ZDSJ
//into ll_newtable
from GY_YGDM INNER JOIN GY_JBBM,GY_KSDM,YS_JBZD
on YS_JBZD.ZDSJ between :ls_dtime1 and :ls_dtime2
这代码有什么问题?

join 没有一个表连接多个表用逗号分割的语法,你必须这么连接

select GY_JBBM.NAME,GY_KSDM.KSMC,GY_YGDM.YGMC,YS_JBZD.ZDSJ
from GY_YGDM join GY_JBBM on (GY_JBBM.id=GY_YGDM.id ) join GY_KSDM on(GY_YGDM.id = GY_KSDM.id) ………………

一个个把所有表都连接完

还有问题hi我。追问

on (GY_JBBM.id=GY_YGDM.id )
一定是id么?
还是他们有联系的地方?

追答

恩,就是他们关联的一个列。
列名不一定是叫id 啊。
就是这两个表有联系的一列。

追问

GY_YGDM表
KSDM:科室代码ID 和GY_KSDM表关联
YGDM:员工医生代码ID
YGXM:员工医生姓名

GY_KSDM表
KSDM:科室代码ID
KSMC:科室代码名称
如这两个表的关系,要怎么弄?

追答

很明显这两个表都要关联到科室这个表。
然后用 GY_KSDM.KSDM = 科室.KSDM

追问

select GY_YGDM.YGMC,GY_KSDM.KSMC
from GY_YGDM INNER JOIN GY_KSDM on (GY_KSDM.KSDM=GY_YGDM.KSDM )

WHERE YS_JBZD.ZDSJ= between :ls_dtime1 and :ls_dtime2;
我这样弄了还是不能通过!错误!

追答

你后面这个YS_JBZD.ZDSJ 是哪来的?
YS_JBZD没有关联,所以错误的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-13
INNER JOIN GY_JBBM,GY_KSDM,YS_JBZD
这3个表和 GY_YGDM是什么关系呢
---思路大概是
select GY_JBBM.NAME,GY_KSDM.KSMC,GY_YGDM.YGMC,YS_JBZD.ZDSJ
//into ll_newtable
from GY_YGDM INNER JOIN GY_JBBM
on GY_YGDM.ID= GY_JBBM.ID
INNER JOIN GY_KSDM
on GY_YGDM.ID= GY_KSDM.ID
.....
WHERE
YS_JBZD.ZDSJ between :ls_dtime1 and :ls_dtime2
第2个回答  2011-09-13
from GY_YGDM INNER JOIN GY_JBBM,GY_KSDM,YS_JBZD
on YS_JBZD.ZDSJ between :ls_dtime1 and :ls_dtime2
错了.你的表间关系关联很混乱;你想要什么,GY_YGDM 和 GY_JBBM的内连接?
MSSQL SERVER2005及以上版本可换成如下:
;WITH
DD AS(
SELECT GY_JBBM.NAME,GY_YGDM.YGMC
FROM GY_YGDM A INNER JOIN GY_JBBM B
ON A表与B表的关联字段
)
SELECT DD.*,GY_KSDM.KSMC,YS_JBZD.ZDSJ
FROM DD,GY_KSDM,YS_JBZD
相似回答