全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1143
推到 Plurk!
推到 Facebook!

如何將二句sql語法 合併

尚未結案
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-28 15:13:47 IP:221.169.xxx.xxx 未訂閱
filedata -------------- id count -------------- c1 2 file_relation -------------- pid cid -------------- c1 a1 問一個sql語法 file_relation是個id關連表 c1是a1的上一層 若下面sql語法 沒有找到record (1)select * from filedata where id=a1 則我必須用 (若有找到,則下面不去執行) (2) select * from filedata where id=(select pid where cid=a1) 再找一次 (1)及(2) 要如何合併呢 ? 若是 第一個sql有找到,則第二個不用找 也就是說二者互斥
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-29 04:45:39 IP:220.134.xxx.xxx 未訂閱
不清楚你的資料庫類型為何? 建議可利用CASE或IF的方式作 以ACCESS來說 select * from filedata where IIF((select Count(*) from filedata where id=a1) = 0, id=(select pid where cid=a1),id=a1) 若其他的資料庫則可利用CASE等方式來達到需求 ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
Tony-Tang
一般會員


發表:7
回覆:17
積分:9
註冊:2003-10-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-29 08:57:54 IP:61.219.xxx.xxx 未訂閱
select id,count from filedata where id=a1 union select pid,cid from file_relation where cid=a1 ACCESS 並無 union,我是用 MSSQL union 是將兩各資料集合併,如果有相同之資料也會合併在一起 union All 也是將兩各資料集合併,但是如果有相同之資料,不會合併在一起
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-29 09:02:55 IP:221.169.xxx.xxx 未訂閱
我使用的是 Oracle
Fishman
尊榮會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-29 09:04:33 IP:210.65.xxx.xxx 未訂閱
Hi seedbcc,    試試以下語法,不知是否與你要的有出入
select  *
from    filedata
where   id = :p
union all
select  *
from    filedata
where   id = (select pid from file_relation where cid = :p)
and     not exists (select 'exists filedata' from filedata where id = :p)
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-29 09:14:34 IP:221.169.xxx.xxx 未訂閱
感謝fishman大大 再請教一下 若是 filedata -------------- id count -------------- (1) c1 2 <------------------------若(2)不存在 才取出此筆 (2) a1 2 <------------------------若(3)不存在 才取出此筆 (3) b1 2 <------------------------只想取出此筆資料 file_relation -------------- pid cid -------------- c1 a1 a1 b1 <--------------------- *** 若 關連表中還有一層, 那麼我要如何再加入
Fishman
尊榮會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-29 10:31:29 IP:210.65.xxx.xxx 未訂閱
Hi seedbcc,    建議你將此兩個 Table 結合為一個 Table 搭配 connect by 與 start with 語法來作,在取其 Level 最大者即為你的需要
Oracle 配遞迴式的 SQL Command
SELECT  LEVEL,
        PARENT_MENU_ID,
        MENU_ID,
        SEQNO,
        NAME,
        DESCRIPTION
FROM    MENU
CONNECT BY PARENT_MENU_ID = PRIOR MENU_ID
START WITH PARENT_MENU_ID IS NULL
結果如下圖,其中 Level 為筆該資料在第幾層 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-05-17 18:46:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!