TABLE的資料搜尋問題 |
答題得分者是:st33chen
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
TABLE A 的SN TABLE B 的SN
A.SN 不良品 會被塞入 B.SN 假設 COUNT(A.SN) 有5筆資料 COUNT(B.SN) 有3筆資料 其中的兩筆COUNT出來,B沒有資料也就是不良 希望秀出成為 COUNT(A.SN) , COUNT(B.SN) 150 3 50 2 10 1 40 0 100 0 希望可以把0的也列出來 可是 ============================= 那我下的SQL COUNT(A.SN),COUNT(B.SN) A.SN = B.SN( ) 搜尋出來會變成 COUNT(A.SN) , COUNT(B.SN) 150 3 50 2 10 1 =============================== COUNT(B.SN) = 0 的就沒顯示出來 40 0 100 0 應該是A.SN = B.SN( ) 所造成的 (因為其中一各TABLE找不到資料) 請問...那我該如何下SQL呢? 才能達成我要的目的
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
我的SQL
[code sql] SELECT A.WORK_ORDER,B.PART_NO,COUNT(DISTINCT A.SERIAL_NUMBER) "COUNT", COUNT(DISTINCT C.SERIAL_NUMBER) "ERROR COUNT" FROM G_SN_TRAVEL A, SYS_PART B, G_SN_TRAVEL C WHERE A.PROCESS_ID IN ('100020','100021','100029','100031','100045') AND TO_CHAR(A.OUT_PROCESS_TIME,'YYYYMMDD') = '20080220' AND A.STAGE_ID <> '10015' AND A.MODEL_ID = B.PART_ID AND C.WORK_ORDER = A.WORK_ORDER( ) //// <- 兩各TABLE的連結點 AND C.PROCESS_ID IN ('100020','100021','100029','100031','100045') AND TO_CHAR(A.OUT_PROCESS_TIME,'YYYYMMDD') = '20080220' AND A.STAGE_ID <> '10015' AND C.CURRENT_STATUS = '1' GROUP BY A.WORK_ORDER,B.PART_NO [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
lovemari
中階會員 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
===================引 用 P.D. 文 章=================== 可否列出你原sql的語法 Dear 版大 你要的不就是這段嗎 ??? [code sql] SELECT A.WORK_ORDER,B.PART_NO, COUNT(DISTINCT A.SERIAL_NUMBER) "COUNT", COUNT(DISTINCT C.SERIAL_NUMBER) "ERROR COUNT" FROM G_SN_TRAVEL A, SYS_PART B, G_SN_TRAVEL C WHERE A.PROCESS_ID IN ('100020','100021','100029','100031','100045') AND TO_CHAR(A.OUT_PROCESS_TIME,'YYYYMMDD') = '20080220' AND A.STAGE_ID <> '10015' AND A.MODEL_ID = B.PART_ID AND C.WORK_ORDER = A.WORK_ORDER( ) -- <- 兩各TABLE的連結點 AND C.PROCESS_ID IN ('100020','100021','100029','100031','100045') AND TO_CHAR(A.OUT_PROCESS_TIME,'YYYYMMDD') = '20080220' AND A.STAGE_ID <> '10015' AND C.CURRENT_STATUS = '1' [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2008-02-21 11:28:33, 註解 無‧
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
oracle 的話應該會出現
COUNT(A.SN) , COUNT(B.SN) 150 3 50 2 10 1 40 100 改成 select COUNT(A.SN) , nvl(COUNT(B.SN),0) from a, b where a.sn=b.sn( ) 應該可以. 請試試看
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
仔細看了一下您的 sql,
c 和 a 都選自 g_sn_travel, 而且看起來 c 的條件比 a 多, 推論 c 的筆數應該比 a 少, join 的部份應該是筆數多的在左邊, 也就是 ( ) 要放在筆數少的 table
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |