子查詢要回傳兩欄位值,而主查詢的這兩欄位不能含有這兩欄位值,這sql怎麼寫? |
答題得分者是:eaglewolf
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
子查詢要回傳兩欄位值,而主查詢的這兩欄位不能含有這兩欄位值,這sql怎麼寫? 我是用ado元件去存取access的.mdb資料庫
要回傳兩欄位值,是因為要這兩欄位值才能表示要在主查詢予以排除,而且這兩欄位值不表示在主查詢是惟一值 如 欄位名如下 no 姓名 , 身分證號 , 消費金額 , 更新日期, 消費日期 , 消費次數 , 最多消費總次數 1 tom a111 $100 95.1.6 95.1.6 1 3 2 mary b111 $50 95.1.8 95.1.8 1 3 3 john c111 $100 95.1.5 95.1.5 1 3 4 tom a111 $100 95.1.6 95.2.3 2 3 5 john c111 $100 95.1.5 95.2.4 2 3 6 john c111 $100 95.1.5 95.3.1 3 3 7 mary b111 $100 95.1.8 95.2.9 2 3 8 mary b111 $100 95.1.8 95.3.8 3 3 9 john c111 $100 95.4.1 95.4.1 1 4 10 john c111 $50 95.4.1 95.5.5 2 4 我希望下的sql是把消費次數=最多消費總次數的記錄予以排除,即顯示如下結果 no 姓名 , 身分證號 , 消費金額 , 更新日期, 消費日期 , 消費次數 , 最多消費總次數(最多3次) 1 tom a111 $100 95.1.6 95.1.6 1 3 4 tom a111 $100 95.1.6 95.2.3 2 3 9 john c111 $100 95.4.1 95.4.1 1 4 10 john c111 $50 95.4.1 95.5.5 2 4 我寫如下但不成功 select * from table where (身分證號 ,更新日期) no exists (select 身分證號 ,更新日期 from table where 消費次數=最多消費總次數) |
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
你的需求應該是
選出 消費紀錄尚未達最多消費次數的顧客的所有紀錄 select * From Table1 where [身分証號] not in (select [身分証號] From Tabel1 Where [最多消費總次數(最多3次)] = [消費次數] ) ===================引 用 ry_lee 文 章=================== 子查詢要回傳兩欄位值,而主查詢的這兩欄位不能含有這兩欄位值,這sql怎麼寫?我是用ado元件去存取access的.mdb資料庫 要回傳兩欄位值,是因為要這兩欄位值才能表示要在主查詢予以排除,而且這兩欄位值不表示在主查詢是惟一值 如 欄位名如下 no 姓名 , 身分證號 , 消費金額 , 消費日期 , 消費次數 , 最多消費總次數(最多3次) 1tom a111 $100 95.1.6 1 3 2 mary b111 $50 95.1.8 13 3 john c111 $100 95.1.5 1 3 4 tom a111 $100 95.2.3 2 3 5 john c111 $100 95.2.4 2 3 6 john c111 $100 95.3.1 3 3 7 mary b111 $100 95.2.9 2 3 8 mary b111 $100 95.3.8 3 3 我希望下的sql是把消費次數=最多消費總次數(最多3次)的記錄予以排除,即顯示如下結果 no 姓名 , 身分證號 , 消費金額 , 消費日期 , 消費次數 , 最多消費總次數(最多3次) 1tom a111 $100 95.1.6 1 3 4 tom a111 $100 95.2.3 2 3
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL |
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
謝謝你:
同一身分證號可能有三筆記錄要排除,有的不能如john,所以似乎不能僅以身分證號來做為排除依據.應該是最多消費總次數=消費次數的那筆記錄的更新日期及身分證號的所有記錄都要排除. ===================引 用 eaglewolf 文 章=================== 你的需求應該是 選出 消費紀錄尚未達最多消費次數的顧客的所有紀錄 select * From Table1where [身分証號] not in (select [身分証號]From Tabel1Where [最多消費總次數(最多3次)]= [消費次數]) ===================引 用 ry_lee 文 章=================== 子查詢要回傳兩欄位值,而主查詢的這兩欄位不能含有這兩欄位值,這sql怎麼寫?我是用ado元件去存取access的.mdb資料庫 要回傳兩欄位值,是因為要這兩欄位值才能表示要在主查詢予以排除,而且這兩欄位值不表示在主查詢是惟一值 如 欄位名如下 no 姓名 , 身分證號 , 消費金額 , 消費日期 , 消費次數 , 最多消費總次數(最多3次) 1tom a111 $100 95.1.6 1 3 2 mary b111 $50 95.1.8 13 3 john c111 $100 95.1.5 1 3 4 tom a111 $100 95.2.3 2 3 5 john c111 $100 95.2.4 2 3 6 john c111 $100 95.3.1 3 3 7 mary b111 $100 95.2.9 2 3 8 mary b111 $100 95.3.8 3 3 我希望下的sql是把消費次數=最多消費總次數(最多3次)的記錄予以排除,即顯示如下結果 no 姓名 , 身分證號 , 消費金額 , 消費日期 , 消費次數 , 最多消費總次數(最多3次) 1tom a111 $100 95.1.6 1 3 4 tom a111 $100 95.2.3 2 3
編輯記錄
ry_lee 重新編輯於 2007-08-28 22:07:06, 註解 無‧
|
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
不懂
select [身分証號] From Tabel1 Where [最多消費總次數(最多3次)]= [消費次數] 會得到b111及c111 select * From Table1 where [身分証號] not in (select [身分証號] From Tabel1 Where [最多消費總次數(最多3次)]= [消費次數]) 自然就是剩a111所有的記錄了 或許你可以列出上面語法不能排除的例子 ===================引 用 ry_lee 文 章=================== 謝謝你: 同一身分證號可能有三筆記錄要排除,有的不能如john,所以似乎不能僅以身分證號來做為排除依據.應該是最多消費總次數=消費次數的那筆記錄的更新日期及身分證號的所有記錄都要排除. ===================引 用 eaglewolf 文 章=================== 你的需求應該是 選出 消費紀錄尚未達最多消費次數的顧客的所有紀錄 select * From Table1where [身分証號] not in (select [身分証號]From Tabel1Where [最多消費總次數(最多3次)]= [消費次數]) ===================引 用 ry_lee 文 章=================== 子查詢要回傳兩欄位值,而主查詢的這兩欄位不能含有這兩欄位值,這sql怎麼寫?我是用ado元件去存取access的.mdb資料庫 要回傳兩欄位值,是因為要這兩欄位值才能表示要在主查詢予以排除,而且這兩欄位值不表示在主查詢是惟一值 如 欄位名如下 no 姓名 , 身分證號 , 消費金額 , 消費日期 , 消費次數 , 最多消費總次數(最多3次) 1tom a111 $100 95.1.6 1 3 2 mary b111 $50 95.1.8 13 3 john c111 $100 95.1.5 1 3 4 tom a111 $100 95.2.3 2 3 5 john c111 $100 95.2.4 2 3 6 john c111 $100 95.3.1 3 3 7 mary b111 $100 95.2.9 2 3 8 mary b111 $100 95.3.8 3 3 我希望下的sql是把消費次數=最多消費總次數(最多3次)的記錄予以排除,即顯示如下結果 no 姓名 , 身分證號 , 消費金額 , 消費日期 , 消費次數 , 最多消費總次數(最多3次) 1tom a111 $100 95.1.6 1 3 4 tom a111 $100 95.2.3 2 3
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL |
瘋狂火星人
一般會員 發表:1 回覆:29 積分:6 註冊:2005-06-17 發送簡訊給我 |
select * from table1
where no not in (select no from table1 where 消費次數<>最多消費總次數) 一定要有一個唯一值來作過濾,以您的case中,欄位no似乎就是唯一值。 1tom a111 $10095.1.6 95.1.6 1 3 2 mary b111 $50 95.1.8 95.1.8 13 3 john c111 $100 95.1.5 95.1.5 1 3 4 tom a111 $100 95.1.6 95.2.3 2 3 5 john c111 $100 95.1.5 95.2.4 2 3 7 mary b111 $100 95.1.8 95.2.9 2 3 9 john c111 $100 95.4.1 95.4.1 1 4 10 john c111 $50 95.4.1 95.5.5 2 4 真正未達最大消費次數的應該有上面這八筆。 eaglewolf大大提到的方法,會將達到最大消費次數的人所有紀錄都過濾掉。 包含"未達"最大消費次數的紀錄。 ===================引 用 ry_lee 文 章=================== 子查詢要回傳兩欄位值,而主查詢的這兩欄位不能含有這兩欄位值,這sql怎麼寫?我是用ado元件去存取access的.mdb資料庫 要回傳兩欄位值,是因為要這兩欄位值才能表示要在主查詢予以排除,而且這兩欄位值不表示在主查詢是惟一值 如 欄位名如下 no 姓名 , 身分證號 , 消費金額 , 更新日期, 消費日期 , 消費次數 , 最多消費總次數 1tom a111 $10095.1.6 95.1.6 1 3 2 mary b111 $50 95.1.8 95.1.8 13 3 john c111 $100 95.1.5 95.1.5 1 3 4 tom a111 $100 95.1.6 95.2.3 2 3 5 john c111 $100 95.1.5 95.2.4 2 3 6 john c111 $100 95.1.5 95.3.1 3 3 7 mary b111 $100 95.1.8 95.2.9 2 3 8 mary b111 $100 95.1.8 95.3.8 3 3 9 john c111 $100 95.4.1 95.4.1 1 4 10 john c111 $50 95.4.1 95.5.5 2 4 我希望下的sql是把消費次數=最多消費總次數的記錄予以排除,即顯示如下結果 no 姓名 , 身分證號 , 消費金額 , 更新日期, 消費日期 , 消費次數 , 最多消費總次數(最多3次) 1tom a111 $10095.1.6 95.1.6 1 3 4 tom a111 $100 95.1.6 95.2.3 2 3 9 john c111 $100 95.4.1 95.4.1 1 4 10 john c111 $50 95.4.1 95.5.5 2 4 我寫如下但不成功 select * from table where (身分證號 ,更新日期) no exists (select 身分證號 ,更新日期 from table where 消費次數=最多消費總次數) |
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
select Table1.* From Table1 where [身分證號] not in
(select [身分證號] From Table1 where [最多消費總次數] = [消費次數] ) union select Table1.* From Table1 Inner Join (select [no] , 身分證號 From Table1 where [最多消費總次數] = [消費次數] ) AS B On Table1.[no] > B.[no] And Table1.身分證號 = B.身分證號 order by [no]
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL |
stars_chen
一般會員 發表:14 回覆:35 積分:9 註冊:2006-10-29 發送簡訊給我 |
SELECT A.* FROM TABLE1 A,
(SELECT 身分證號, 更新日期 FROM TABLE1 WHERE 消費次數=最多消費總次數) B WHERE A.身分證號<>B.身分證號 AND A. 更新日期<>B. 更新日期 ===================引 用 ry_lee 文 章=================== 子查詢要回傳兩欄位值,而主查詢的這兩欄位不能含有這兩欄位值,這sql怎麼寫??我是用ado元件去存取access的.mdb資料庫 要回傳兩欄位值,是因為要這兩欄位值才能表示要在主查詢予以排除,而且這兩欄位值不表示在主查詢是惟一值 如? 欄位名如下 ?no? ?姓名?? , 身分證號 , 消費金額 ,? 更新日期,? 消費日期 , 消費次數 , 最多消費總次數?? 1??????????tom??? ?a111??????????? $100???????????95.1.6?????????? 95.1.6?????????? 1?????????????????? 3 2 ???????? mary?? b111??????????? $50???????????? 95.1.8?????????? 95.1.8?????????? 1???????????????????3????? 3????????? john??? c111??????????? $100?????????? 95.1.5?????????? 95.1.5?????????? 1?????????????????? 3?? 4????????? tom???? a111??????????? $100????????? 95.1.6??????????? 95.2.3??????????? 2????????????????? ?3 5????????? john??? c111??????????? $100????????? 95.1.5??????????? 95.2.4??????????? 2?????????????????? 3????? 6????????? john??? c111??????????? $100????????? 95.1.5??????????? 95.3.1??????????? 3?????????????????? 3???? 7????????? mary?? b111??????????? $100????????? 95.1.8??????????? 95.2.9??????????? 2???????????????? ? 3???? 8????????? mary?? b111??????????? $100????????? 95.1.8??????????? 95.3.8??????????? 3?????????????????? 3???? 9????????? john??? c111??????????? $100????????? 95.4.1??????????? 95.4.1??????????? 1?????????????????? 4 10?????? john??? c111???????????? $50??????????? 95.4.1??????????? 95.5.5??????????? 2?????????????????? 4 我希望下的sql是把消費次數=最多消費總次數的記錄予以排除,即顯示如下結果 ?no? ?姓名?? , 身分證號 , 消費金額 ,? 更新日期,? 消費日期 , 消費次數 , 最多消費總次數(最多3次)?? 1???????tom??? ?a111??????????? $100???????????95.1.6?????????? 95.1.6?????????? 1???????????????????? 3 4?????? tom???? a111??????????? $100?????????? 95.1.6??????????? 95.2.3??????????? 2????????????????? ?3 9?????? john??? c111??????????? $100?????????? 95.4.1??????????? 95.4.1??????????? 1?????????????????? 4 10???? john??? c111???????????? $50??????????? 95.4.1??????????? 95.5.5??????????? 2?????????????????? 4 我寫如下但不成功 select * from table where (身分證號 ,更新日期) no exists (select? 身分證號 ,更新日期 from table where 消費次數=最多消費總次數)
編輯記錄
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |