三张表
表a,字段:custcode,custname(即客户代码,客户名称)
表b,字段:deptcode,deptname(即部门代码,部门名称)
表C(单据表):字段:number,custdept,inputdate,type(即单号,客户或部门代码,录入日期,单据类型)
现在要在dbgrid中显示c表的内容
但是custdept代码要换成custname或deptname
这个select语句怎么写?
说明:
type字段,标识进货单还是部门领料单,它只有两个值:
'jh'为进货单,如type为'jh',则cuetdept代码必须到a表中找
'll'为领料单,如type为'll',则cusrdept代码必须到b表中找另外:我用ado+access,access数据库不支持case....end的sql语句
有其它解决办法也行!
表a,字段:custcode,custname(即客户代码,客户名称)
表b,字段:deptcode,deptname(即部门代码,部门名称)
表C(单据表):字段:number,custdept,inputdate,type(即单号,客户或部门代码,录入日期,单据类型)
现在要在dbgrid中显示c表的内容
但是custdept代码要换成custname或deptname
这个select语句怎么写?
说明:
type字段,标识进货单还是部门领料单,它只有两个值:
'jh'为进货单,如type为'jh',则cuetdept代码必须到a表中找
'll'为领料单,如type为'll',则cusrdept代码必须到b表中找另外:我用ado+access,access数据库不支持case....end的sql语句
有其它解决办法也行!
FROM (c LEFT JOIN a ON [a].[custcode]=[c].[custdept]) LEFT JOIN b ON [b].[deptcode]=[c].[custdept];妹妹给分 : )
FROM C LEFT JOIN A ON C.custcode =A.custcode
where c.type='jh'
union
SELECT number,b.deptname as name,inputdate,type
FROM C LEFT JOIN B ON C.custcode =b.deptcode
where c.type='ll'
IIf([type]="jh",[a].[custname],[b].[deptname]) AS TypeName
空在那边,客户名称到有了!
奇怪了?
我把你的代码拷贝进去的,就是没见部们名称出现,它空在那边。
FROM C ,A
where C.custcode =A.custcode and c.type='jh'
union
SELECT number,b.deptname as name,inputdate,type
FROM C,B
where C.custcode =b.deptcode and c.type='ll'
IIf([type]="jh",[a].[custname],[b].[deptname]) AS TypeName
这条语句当 type="jh" 时,TypeName 列显示 custname
当 type<>"jh" 也就是 ="ll" 时,TypeName 列显示 deptname你不会是要把它们分成两列显示吧?那这样:
SELECT [number], [inputdate], [custdept], IIf([type]="jh",[a].[custname],"") AS TypeName, IIf([type]="ll",[b].[deptname],"") AS TypeName2, [type]
FROM (c LEFT JOIN a ON [a].[custcode]=[c].[custdept]) LEFT JOIN b ON [b].[deptcode]=[c].[custdept];
首先检查它们的字段类型是否一致
再检查它们的值是否对应再不行,把你的表中的数据贴出来看看
FROM C LEFT JOIN A ON C.custdept =A.custcode
where c.type='jh'
union
SELECT number,b.deptname as name,inputdate,type
FROM C LEFT JOIN B ON C.custdept =b.deptcode
where c.type<>'jh'
谢谢!