作者evantw (安安小成)
看板Database
标题Re: [SQL ] 请问多个相似 Table 串联查询如何写??
时间Sun Apr 17 11:41:06 2011
资料表情况假设是
TableA
栏位A 栏位Key
1 001
2 002
3 003
4 004
Table B
栏位key B栏位
001 AAA
001 ABC
001 ACC
002 BBB
002 BBA
003 CCC
Table C
栏位key C栏位
001 AAA
001 ACC
002 BBB
002 BBA
003 CCC
004 DDD
Table D
栏位key D栏位
002 BBB
002 BBA
003 CCC
我用了 left join 语法将 a,b,c,d Table 连结在一起
select a*,b.B栏位,c.C栏位,d.D栏位
from ((a left join b on a.栏位Key=b.栏位Key)left join
c on a.栏位Key=c.栏位Key) left join d on a.栏位Key=d.栏位Key
但是显示出来的资料如下
栏位key A栏位 B栏位 C栏位 D栏位
001 1 AAA AAA
001 1 ABC ACC
001 1 ACC
002 2 BBB BBB DDD
002 2 BBA BBA DDD
003 3 CCC CCC CCC
004 4 DDD
现在是在程式 Form 上有 4个 Table 个别显示 a,b,c,d 的资料
就以 a Table 上就会有 A 栏位多笔重复显示
栏位key A栏位
001 1
001 1
001 1
002 2
002 2
003 3
004 4
C Table 上则是
栏位key C栏位
001 AAA
001 ACC
001
002 BBB
002 BBA
003 CCC
004 DDD
请问有什麽方式可以变成在 a Table 上同一笔栏位Key仅显示一次
栏位key A栏位
001 1
002 2
003 3
004 4
C Table 上第三笔空白处不显示跳过呢
栏位key C栏位
001 AAA
001 ACC
002 BBB
002 BBA
003 CCC
004 DDD
这部分是还要从 select 语法处修改吗??
还是从 Form 程式码上做程式的判断呢??
请各位能否给个提示
谢谢~~
※ 引述《Piceman (派斯面)》之铭言:
: 推文竟然要等240秒...
: 先假设你知道怎麽安排查询结果到各表单中
: 你需要的会是
: select a.*, b.*, c.*,d.*
: from tablea as a, tableb as b, tablec as c, talbed as d
: on a.key=b.key ....
: where a.data_key='key_value'
: 大概是这样的语法
: 关键字请查(inner/left) join
: ※ 引述《evantw (安安小成)》之铭言:
: : 资料库内有 4个 Table
: : 其 A Table 为存放基本资料
: : 其 B、C、D Table 与 A 之间彼此用 Data_Key(工号) 栏位串联
: : 在 A Table 每个 Data_key 只有一笔
: : 而 B、C、D Table 存放的内容分别是 加班、请假、绩效
: : 所以会存在同 Table 内同一个 Data_key 有多笔情况
: : 且这 4个 Table 彼此栏位上有些栏位命名会相同重复
: : 现在我目前需要做一个查询系统
: : 让使用者在栏位上打上 Data_Key (工号) 後相关资料
: : 基本资料 + 加班纪录 + 请假纪录 + 绩效纪录 同时出现
: : 目前在程式的 Form 内分别也放了 4个 Table 来显示这 4个 Table 查询的结果
: : 而目前我的作法就很传统的
: : 先用 Data_key 查完基本资料并显示在 Form Table 上後
: : 再依序个别查询 加班、请假、绩效 的 Table
: : 我想了解的是有没有办法可以一次串联查出这 4个 Table 後
: : 分别可以显示在 Form 上 4个 Table 上
: : (在资料库的这 4 个 Table 栏位上会有几个是名称是重复的)
: : 如果有说明不清楚的可回复告知
: : 谢谢各位~~
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.99.68.46