如何將二句sql語法 合併 |
尚未結案
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
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 發送簡訊給我 |
不清楚你的資料庫類型為何?
建議可利用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 發送簡訊給我 |
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
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 發送簡訊給我 |
感謝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 發送簡訊給我 |
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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |