close
標題:

sql語法問題

發問:

請問我有一張資料表 有2個欄位 第一個欄位A 是發票檔 記錄發票號碼 第二個欄位B 是購買物品檔 記錄購買的物品 現在我想知道 同時購買鉛筆和橡皮擦 發票檔數量 請問語法要怎麼寫 假設我的資料表長這樣 A欄位 B欄位 100 鉛筆 100 削鉛筆機 100 橡皮擦 101 鉛筆 101 鉛筆盒 102 橡皮擦 103 鉛筆 103 橡皮擦 用看的可以知道 同時購買鉛筆和橡皮擦的有 A欄位為100和103 兩個 請問我要怎麼寫語法才可以統計出整個資料表裡面的數量 更新: 恩恩 對 我是要計算數量 就是同時有夠買鉛筆跟橡皮擦的 發票數量 100意思是一個發票檔 等於是一位顧客購買時開的發票 他買了 鉛筆 削鉛筆機 跟像皮 等於是一位顧客購買時開的發票 他買了 鉛筆 削鉛筆機 跟橡皮擦 然後在之後的客人 又買了鉛筆跟橡皮擦 然後不知道有幾個客人 我要統計 同時買了鉛筆跟橡皮擦的有幾個。 我等等會試試看您提供的語法 感謝你喔 更新 2: 我想問一下 我看了你的方式 你用unioin all 我的資料跑出來q是501個 那我想問 如果我用join呢 我先找出 select * into B鉛筆 from 大資料表 where B欄位='鉛筆' 我資料會是有3筆(A欄位是100,101,103的這三筆) 然後我再找出 select * into B橡皮擦 from 大資料表 where B欄位='橡皮擦' 我資料會是有3筆(A欄位是100,102,103的這三筆) 更新 3: 然後再用inner join select B鉛筆.* from B鉛筆 inner join B橡皮擦 on B鉛筆.A欄位=B橡皮擦.A欄位 出來結果也是2筆 對吧 但我使用你的在我的大表測試 結果是501 如果用join結果是497 請問為什麼有差異? 更新 4: 有沒有語法是 設定A欄位相同 然後where B欄位='鉛筆' or B欄位='橡皮擦' 更新 5: 恩恩 我看過了 有那種發票檔是 108 橡皮擦 108 橡皮擦 所以我用distinct 數量是491 因為我的497不知道為什麼會join到重複= =

最佳解答:

要算出資料表裡面什麼數量,請再說清楚一點,你的意思是統計出同時購買鉛筆和橡皮擦的數量?如以你的例子來看,就是2筆嗎? 2010-09-18 02:32:10 補充: 如果沒誤解你意思的話 select count(cc) as q from (select count(A欄位) as cc from (SELECT * FROM 資料表 where B欄位 ='鉛筆' union all SELECT * FROM 資料表 where B欄位 ='橡皮擦') as a group by A欄位) as b where cc > 1 希望有幫到你 2010-09-18 14:49:41 補充: 你可能還是要用少一點的資料量與正確的數量去做2個sql測試,看哪個正確,也就是說,你要確定你的table正確的數量,是501還是497,若實際人工確定正確數是501,也就是我下的sql對,若是497就是你下的對,501或497可能資料量太多,所以你可能再減少資料量試試 我的sql不一定正確,你的sql我也沒試,也許我有一些情況沒判斷到,所以你要自行比對一下 還有,應該是沒有語法設定A欄位相同 然後where B欄位='鉛筆' or B欄位='橡皮擦',除非你用程式判斷

 

此文章來自奇摩知識+如有不便請留言告知

其他解答:

同時購買鉛筆和橡皮擦的發票檔數量:SELECT COUNT(*) FROM myTable WHERE A IN ( SELECT A FROM myTable WHERE B = '鉛筆' ) AND B = '橡皮擦' 同時購買鉛筆和橡皮擦的發票檔:SELECT A FROM myTable WHERE A IN ( SELECT A FROM myTable WHERE B = '鉛筆' ) AND B = '橡皮擦'7C4150FCDCEDD023
arrow
arrow

    gpjqem1 發表在 痞客邦 留言(0) 人氣()