VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

SQL語法問題 …真是深奧…

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
tokezmax



註冊時間: 2005-04-12
文章: 3


第 1 樓

發表發表於: 星期二 四月 12, 2005 4:56 pm    文章主題: SQL語法問題 …真是深奧… 引言回覆

此問題已經花了我四小時了= =~
希望來到貴寶地能遇貴人~~(跪拜~)

進主題吧~
問題是這樣子的,我有兩個資料庫,資料結構都一樣~

=====宣告=====

A資料庫內的TABLE 在此簡稱 A.TABLE

B資料庫內的TABLE 在此簡稱 B.TABLE

=============

我想要將 A.TABLE 的資料拷貝到B.TABLE
但如果A.TABLE要COPY的主鍵資料 有和 B.TABLE 主鍵資料內容一樣的話,就不進行COPY

小弟自己的SQL語法如下:

以下三句是確定可以將A資料庫的 A.TABLE 資料 COPY到 B資料庫的B.TABLE。

/==========================
"Insert Into B.TABLE "
" Select * From A.TABLE"
" In "A資料庫路徑"
/==========================

接下來就是條件事要怎麼加了~苦腦丫= =

WHERE EXISTS (
Select * From B.TABLE
EXCEPT CORRESPONDING (主鍵ID)
SELECT * FROM A.TABLE
In "A資料庫路徑"

這樣說不知道清楚不楚~~~
要注意的一點是,我是要將兩個不同的資料庫但結構一樣的TABLE 結合 ,然後將主鍵值一樣的欄位過瀘掉。
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2057


第 2 樓

發表發表於: 星期二 四月 12, 2005 9:04 pm    文章主題: 引言回覆

用VFP寫成程式比較簡單, 要把複雜的運算式簡化成一行指令那須再多花點時間來將"各種程式語法片段分開測試,再試著合在一行".
_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Chris Lee



註冊時間: 2004-03-23
文章: 32


第 3 樓

發表發表於: 星期二 四月 12, 2005 11:15 pm    文章主題: Re: SQL語法問題 …真是深奧… 引言回覆

[quote="tokezmax"]此問題已經花了我四小時了= =~
希望來到貴寶地能遇貴人~~(跪拜~)

進主題吧~
問題是這樣子的,我有兩個資料庫,資料結構都一樣~

=====宣告=====

A資料庫內的TABLE 在此簡稱 A.TABLE

B資料庫內的TABLE 在此簡稱 B.TABLE

=============

我想要將 A.TABLE 的資料拷貝到B.TABLE
但如果A.TABLE要COPY的主鍵資料 有和 B.TABLE 主鍵資料內容一樣的話,就不進行COPY

小弟自己的SQL語法如下:

以下三句是確定可以將A資料庫的 A.TABLE 資料 COPY到 B資料庫的B.TABLE。

/==========================
"Insert Into B.TABLE "
" Select * From A.TABLE"
" In "A資料庫路徑"
/==========================

接下來就是條件事要怎麼加了~苦腦丫= =

WHERE EXISTS (
Select * From B.TABLE
EXCEPT CORRESPONDING (主鍵ID)
SELECT * FROM A.TABLE
In "A資料庫路徑"

這樣說不知道清楚不楚~~~
要注意的一點是,我是要將兩個不同的資料庫但結構一樣的TABLE 結合 ,然後將主鍵值一樣的欄位過瀘掉。[/quote]

not in 不行嗎?
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 3826
來自: Taipei,Taiwan

第 4 樓

發表發表於: 星期三 四月 13, 2005 12:15 am    文章主題: 引言回覆

不同的後端或前端,SQL 命令不太一樣吧!

我的第一個反應也是
INSERT INTO B
SELECT * FROM A
WHERE KEYVALUE NOT IN (SELECT DISTINCT KEYVALUE FROM B)

這樣子,應該時間花滿久的.... ^^;;;

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
jeff25



註冊時間: 2004-10-22
文章: 76
來自: taiwan

第 5 樓

發表發表於: 星期三 四月 13, 2005 9:41 am    文章主題: 引言回覆

兩種作法供參考
1. 將 A.TABLE 中有存在 b.table 的資料刪除
再將 A.TABLE 合併到 B.TABLE
2. 將A.TABLE 不存在B.TABLE 的資料 COPY 到一個暫存檔如 C.TABLE
將 C.TABLE 合併到 B.TABLE

_________________
jeff
回頂端
檢視會員個人資料 發送私人訊息
tokezmax



註冊時間: 2005-04-12
文章: 3


第 6 樓

發表發表於: 星期三 四月 13, 2005 9:42 am    文章主題: 引言回覆

謝謝各位大大的熱情回覆…

小弟對SQL其實不熟。自己翻書努力研究,
單字的作用是知道怎麼用,
但是…實在不知道條件式要放那裡…
真是頭大……後來又一直TRY一直TRY。
寫成了這個樣子↓

INSERT INTO Statistic
WHERE (SELECT * FROM Statistic
EXCEPT CORRESPONDING [RSN]
SELECT * FROM Statistic
In DAODatabase1->DatabaseName)

還是失敗…
啊......頭痛丫~


在次謝謝↓這句讓我受益良多~謝謝~我在來試試。
INSERT INTO B
SELECT * FROM A
WHERE KEYVALUE NOT IN (SELECT DISTINCT KEYVALUE FROM B)
回頂端
檢視會員個人資料 發送私人訊息
tokezmax



註冊時間: 2005-04-12
文章: 3


第 7 樓

發表發表於: 星期三 四月 13, 2005 5:11 pm    文章主題: 引言回覆

OK. 終於搞定了…雖然可能對各位大大是個簡單的問題。
但是我還是要分享一下我完成後的寫法~
如果有寫的不好的地方,請各位大大指點一下~

"INSERT INTO B.TABLE"
" SELECT * From A.TABLE"
" In A資料庫路徑"
" WHERE A主鍵欄位"
" NOT IN (SELECT B主鍵欄位 From B.TABLE)"

這樣的寫法,就可以
將A資料庫指定TABLE下的資料 插入 B資料庫指定TABLE 內 且B資料庫的資料不會插入的資料 蓋掉。
注意一點是,TABLE 結構需一樣

該死,真是有夠麻煩 的一句= =搞了 十二個小時。

在次謝謝大大指點
回頂端
檢視會員個人資料 發送私人訊息
Chris Lee



註冊時間: 2004-03-23
文章: 32


第 8 樓

發表發表於: 星期三 四月 13, 2005 9:31 pm    文章主題: 引言回覆

[quote="tokezmax"]OK. 終於搞定了…雖然可能對各位大大是個簡單的問題。
但是我還是要分享一下我完成後的寫法~
如果有寫的不好的地方,請各位大大指點一下~

"INSERT INTO B.TABLE"
" SELECT * From A.TABLE"
" In A資料庫路徑"
" WHERE A主鍵欄位"
" NOT IN (SELECT B主鍵欄位 From B.TABLE)"

這樣的寫法,就可以
將A資料庫指定TABLE下的資料 插入 B資料庫指定TABLE 內 且B資料庫的資料不會插入的資料 蓋掉。
注意一點是,TABLE 結構需一樣

該死,真是有夠麻煩 的一句= =搞了 十二個小時。

在次謝謝大大指點[/quote]

雖然問得很簡單,但很有禮貌,也知道問完後要回 Post,為網路少見。給你拍拍手,就...不念你不去查查基本的 SQL 語法了。 :o
回頂端
檢視會員個人資料 發送私人訊息
yoncen



註冊時間: 2005-08-29
文章: 31
來自: 爪哇島

第 9 樓

發表發表於: 星期五 十二月 04, 2009 9:10 pm    文章主題: 引言回覆

用exists()方式比in效率高得多。
_________________
The early bird catches the worm...
--yoncen copyright(c) 2001-2005
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 3826
來自: Taipei,Taiwan

第 10 樓

發表發表於: 星期六 十二月 05, 2009 10:42 pm    文章主題: 引言回覆

EXIST() ?

以前說的一樣有效.
"不同的後端或前端,SQL 命令不太一樣吧! "

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作