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

請較高手如何把四個表裝成一個表
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
sthuang66



註冊時間: 2014-04-27
文章: 129


第 1 樓

發表發表於: 星期四 八月 07, 2014 8:32 am    文章主題: 請較高手如何把四個表裝成一個表 引言回覆

舉例我有以下四個表
表1
公司\橘子
A 5
B 3
C
表2
公司\蘋果
B 3
C 2
表3
公司\荔枝
A 3
B 5
表4
公司\芭樂
A 5
C 3
想併成一個
公司\ 橘子\ 蘋果\ 荔枝\ 芭樂
A \ 5 \ 0 \ 3 \ 5
B \ 3 \ 3 \ 5 \ 0
C \ 0 \ 2 \ 0 \ 3

我想過用Append不行
用inner join 不行
用full join 會跳 null
這種表的合併如果很小用Excel眼睛比一下就好!但是若是公司量變成100個以上就不行了
請各位高手不吝賜教
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 2 樓

發表發表於: 星期四 八月 07, 2014 8:39 am    文章主題: 引言回覆

create 表 5 (公司,橘子,蘋果,荔枝,芭樂)
append from 表1
append from 表2
append from 表3
append from 表4

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

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



註冊時間: 2007-01-29
文章: 170


第 3 樓

發表發表於: 星期四 八月 07, 2014 11:50 am    文章主題: 引言回覆

syntech 寫到:
create 表 5 (公司,橘子,蘋果,荔枝,芭樂)
append from 表1
append from 表2
append from 表3
append from 表4


寫程式之前, 一定要先學會腦筋急轉彎



Laughing Wink Twisted Evil
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 4 樓

發表發表於: 星期四 八月 07, 2014 11:54 am    文章主題: 引言回覆

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

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



註冊時間: 2004-07-30
文章: 1518


第 5 樓

發表發表於: 星期四 八月 07, 2014 11:56 am    文章主題: 引言回覆

我比較喜歡一指禪
代碼:

Select 公司 , Sum(橘子) As 橘子 , Sum(蘋果) As 蘋果 , Sum(荔枝) As 荔枝 , Sum(芭樂) As 芭樂 ;
   FROM (;
   SELECT 公司 , Mount As 橘子 ,0000 As 蘋果, 0000 As 荔枝 , 0000 As 芭樂 From 表1 ;
   UNION All;
   SELECT 公司 , 0000 As 橘子 ,Mount As 蘋果, 0000 As 荔枝 , 0000 As 芭樂 From 表2 ;
   UNION All;
   SELECT 公司 , 0000 As 橘子 ,0000 As 蘋果, Mount As 荔枝 , 0000 As 芭樂 From 表3 ;
   UNION All;
   SELECT 公司 , 0000 As 橘子 ,0000 As 蘋果, 0000 As 荔枝 , Mount As 芭樂 From 表4) a ;
   GROUP By 公司 ;
        into cursor 表5


ckp6250 在 星期四 八月 07, 2014 12:02 pm 作了第 2 次修改
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 6 樓

發表發表於: 星期四 八月 07, 2014 12:00 pm    文章主題: 引言回覆

金剛經有云:

會寫 VFP 程式者,即非會VFP,是名會VFP.

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

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



註冊時間: 2014-07-20
文章: 190


第 7 樓

發表發表於: 星期四 八月 07, 2014 1:12 pm    文章主題: 引言回覆

換個方向思考試試!!
crea dbf aa (company c(10),mountA n(3),mountB n(3),mountC n(3))
inse into aa valu ('橘子',3,5,0)
inse into aa valu ('蘋菓',0,3,2)
.
.
.
copy to bb.xls type xl5 &&轉成excel
回頂端
檢視會員個人資料 發送私人訊息
oldbb



註冊時間: 2007-02-28
文章: 81


第 8 樓

發表發表於: 星期四 八月 07, 2014 3:39 pm    文章主題: 引言回覆

CREATE CURSOR 表0 (公司 C(10), 橘子 I, 蘋果 I, 荔枝 I, 芭樂 I)
INDEX ON 公司 TAG 公司

FOR i = 1 TO 4
cAlias = "表" + TRANSFORM(i)
SELECT (cAlias)
cField = FIELD(2)
SET RELATION TO 公司 INTO 表0
SCAN
IF !FOUND("表0")
APPEND BLANK IN "表0"
REPLACE 表0.公司 WITH EVALUATE(cAlias + ".公司") IN "表0"
ENDIF
REPLACE ("表0." + cField) WITH EVALUATE("表0." + cField + " + " + cAlias + "." + cField) IN "表0"
ENDSCAN
SET RELATION TO
ENDFOR

SELECT 表0
BROWSE
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 129


第 9 樓

發表發表於: 星期六 八月 09, 2014 5:16 pm    文章主題: 引言回覆

謝謝各位高手指教!我會一一試試
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 129


第 10 樓

發表發表於: 星期日 八月 10, 2014 1:56 am    文章主題: 引言回覆

***********************************
create 表 5 (公司,橘子,蘋果,荔枝,芭樂)
append from 表1
append from 表2
append from 表3
append from 表4
************************************
以上這個方法不行
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 129


第 11 樓

發表發表於: 星期日 八月 10, 2014 2:01 am    文章主題: 引言回覆

********************

換個方向思考試試!!
crea dbf aa (company c(10),mountA n(3),mountB n(3),mountC n(3))
inse into aa valu ('橘子',3,5,0)
inse into aa valu ('蘋菓',0,3,2)
.
.
.
copy to bb.xls type xl5 &&轉成excel
********************************************
這個方法與轉成Excel後直接剪貼差不多
公司數多就很辛苦
不過還是謝謝你的指導
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 129


第 12 樓

發表發表於: 星期日 八月 10, 2014 2:51 am    文章主題: 引言回覆

***********************************
create 表 5 (公司,橘子,蘋果,荔枝,芭樂)
append from 表1
append from 表2
append from 表3
append from 表4
************************************

剛剛發現在加一行
select 公司,sum(橘子) as 橘子,sum(蘋果) as 蘋果,sum(荔枝) as 荔枝,sum(芭樂) as 芭樂 from 表5 group by 公司 into table 表0

如此就可以啦
感謝
回頂端
檢視會員個人資料 發送私人訊息
lygcw9603



註冊時間: 2011-12-25
文章: 75


第 13 樓

發表發表於: 星期日 八月 10, 2014 4:23 pm    文章主題: 引言回覆

Create Cursor T1 (公司 C(1),橘子 N(2))
Insert Into T1 Values ("A",5)
Insert Into T1 Values ("B",3)
Create Cursor T2 (公司 C(1),蘋果 N(2))
Insert Into T2 Values ("B",3)
Insert Into T2 Values ("C",2)
Create Cursor T3 (公司 C(1),荔枝 N(2))
Insert Into T3 Values ("A",3)
Insert Into T3 Values ("B",5)
Create Cursor T4 (公司 C(1),芭樂 N(2))
Insert Into T4 Values ("A",5)
Insert Into T4 Values ("C",3)
Select 公司 From T1 ;
Union Select 公司 From T2 ;
Union Select 公司 From T3 ;
Union Select 公司 From T4 Into Cursor Ks
Select A.公司,Nvl(橘子,0) 橘子,Nvl(蘋果,0) 蘋果,Nvl(荔枝,0) 荔枝,Nvl(芭樂,0) 芭樂;
FROM Ks A Left Join T1 B On A.公司==B.公司;
Left Join T2 C On A.公司==C.公司;
Left Join T3 D On A.公司==D.公司;
Left Join T4 E On A.公司==E.公司
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 129


第 14 樓

發表發表於: 星期三 八月 13, 2014 11:37 am    文章主題: 引言回覆

------------------------------------------------
Select 公司 From T1 ;
Union Select 公司 From T2 ;
Union Select 公司 From T3 ;
Union Select 公司 From T4 Into Cursor Ks
Select A.公司,Nvl(橘子,0) 橘子,Nvl(蘋果,0) 蘋果,Nvl(荔枝,0) 荔枝,Nvl(芭樂,0) 芭樂;
FROM Ks A Left Join T1 B On A.公司==B.公司;
Left Join T2 C On A.公司==C.公司;
Left Join T3 D On A.公司==D.公司;
Left Join T4 E On A.公司==E.公司
---------------------------------------------------
這個方法也不錯!!!我已經試過!OK
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 129


第 15 樓

發表發表於: 星期三 八月 13, 2014 11:46 am    文章主題: 引言回覆

-----------------------------------------
CREATE CURSOR 表0 (公司 C(10), 橘子 I, 蘋果 I, 荔枝 I, 芭樂 I)
INDEX ON 公司 TAG 公司

FOR i = 1 TO 4
cAlias = "表" + TRANSFORM(i)
SELECT (cAlias)
cField = FIELD(2)
SET RELATION TO 公司 INTO 表0
SCAN
IF !FOUND("表0")
APPEND BLANK IN "表0"
REPLACE 表0.公司 WITH EVALUATE(cAlias + ".公司") IN "表0"
ENDIF
REPLACE ("表0." + cField) WITH EVALUATE("表0." + cField + " + " + cAlias + "." + cField) IN "表0"
ENDSCAN
SET RELATION TO
ENDFOR

SELECT 表0
BROWSE
---------------------------------------------------------
這個方法不是SQL寫法我功力較低!!無法修正
我有把他轉成PRG直接執行 結果卡在
"SELECT (cAlias)" 這一行
錯誤訊息是 ailas '表1' is not found
但是我明明prg和表1,表2,表3,表4都在同一目錄
請高手指正!!!謝謝
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

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


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