線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:831
推到 Plurk!
推到 Facebook!

這個SQL語句如何寫?

答題得分者是:Fishman
dengguo
一般會員


發表:41
回覆:49
積分:23
註冊:2004-01-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-10 15:23:36 IP:219.133.xxx.xxx 未訂閱
use test GO    create table ck_pd(wlbh varchar(20),pdsl decimal,zt varchar(10))    create table ck_cc(wlbh varchar(20),wlmc varchar(20),wlms varchar(50),zt varchar(10),ccsl decimal)    insert into ck_pd select '100001',300,'良品'             union select '100001',230,'不良品'             union select '100002',3100,'不良品'             union select '100003',1230,'良品'             union select '100004',2130,'不良品'             union select '100004',2310,'良品'             union select '100005',2301,'良品'              union select '100006',3230,'不良品'     insert into ck_cc select '100001','刀棒','100*300*2.5六角','良品',500             union select '100001','刀棒','100*300*2.5六角','不良品',1000               union select '100002','刀片','刀片100*2','良品',2300             union select '100003','面蓋','ABS塑膠','良品',100             union select '100004','底蓋','ABS塑膠','良品',20             union select '100005','帖紙','QC標帖','良品',450             union select '100005','帖紙','QC標帖','不良品',300             union select '100006','扎帶','耗材','良品',100    想要得到如下結果:    wlbh         wlmc      wlms           zt    pdsl      ccsl 100001      刀棒   100*300*2.5六角   良品    300       500 100001      刀棒   100*300*2.5六角   不良品  230       1000 100002      刀片     刀片100*2       不良品  3100       0 100003      面蓋    ABS塑膠          良品    1230      100 100004      底蓋   ABS塑膠           良品    2130      20    100004      底蓋   ABS塑膠           不良品  2310      0 100005      帖紙   QC標帖            良品    2301      450 100006      扎帶   耗材              不良品  3230      0 ------------------------------------------------------------------ ck_cc中一定有良品,但不一定有不良品 也就是說取出CK_PD中所有項,然後取出CK_CC中的WLMC,WLMS,CCSL項 如果CK_PD中的ZT爲不良品且CK_CC中該ZT沒有該項時,取出CK_CC中的相應WLBH的WLMC,WLMS然後將CCSL設定爲0    ############################### 初學delphi,請各位多多提點!謝謝! ###############################
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-10 15:41:30 IP:210.69.xxx.xxx 未訂閱
SELECT wlbh,wlmc,wlms,zt,pdsl,ccsl FROM ck_pd, ck_cc WHERE ck_pd.wlbh= ck_cc.wlbh AND ck_pd.zt= ck_cc.zt 或 SELECT ck_cc.wlbh, ck_cc.wlmc, ck_cc.wlms, ck_cc.zt, ck_pd.pdsl, ck_cc.ccsl FROM ck_pd, ck_cc WHERE ck_pd.wlbh= ck_cc.wlbh AND ck_pd.zt= ck_cc.zt
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
dengguo
一般會員


發表:41
回覆:49
積分:23
註冊:2004-01-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-10 15:48:53 IP:219.133.xxx.xxx 未訂閱
TO:pcboy2  你的語句不行啊,我之前就是這樣寫的,但結果是這樣的 wlbh     wlmc  wlms                    zt      pdsl      ccsl           -------------------- -------------------- -------------------- 100001   刀棒  100*300*2.5六角         不良品   230     1000 100001   刀棒  100*300*2.5六角           良品   300     500 100003   面盖  ABS塑胶                   良品   1230    100 100004   底盖  ABS塑胶                   良品   2310     20 100005   帖纸  QC标帖                    良品   2301    450    (所影响的行数为 5 行)    ############################### 初學delphi,請各位多多提點!謝謝! ###############################
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-10 17:21:12 IP:210.65.xxx.xxx 未訂閱
Hi dengguo,    Try this one, hope helpful to you !!
select pd.wlbh,
       cc.wlmc,
       cc.wlms,
       pd.zt,
       pd.pdsl,
       cc.ccsl
from   ck_pd pd,
       ck_cc cc
where  pd.wlbh = cc.wlbh
and    pd.zt = cc.zt
union all
select pd.wlbh,
       cc.wlmc,
       cc.wlms,
       pd.zt,
       pd.pdsl,
       0 as ccsl
from   ck_pd pd,
       ck_cc cc
where  pd.wlbh = cc.wlbh
and    cc.zt = '良品'
and    not exists (select * from ck_cc c where c.wlbh = pd.wlbh and c.zt = pd.zt)
order by 1
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-05-19 6:04:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!