說穿了,應該就是從一堆檔案裡面,整理處理一下,在互相ooxx一下,存在資料表裡,在用公司當家軟體生成報表
1.程式初始化 (建立暫存用資料表n)
1.1 設定日期變數 -取得本機系統時間,算出昨天跟今天,轉一下,弄成Js Value
但是現在為了測試方面,利用環境變數預設好 SystemTodayString=20090810 , SystemYesterdayStrting=20090809
1.2 讀取BusinessDay table 查詢今日是否在交易日與前一個交易日
讀取DataDefined table 查詢檔案與資料表列表 內含接收周期
接著Join兩個Table
接接著利用欄位Frequency 來判斷是否要在List上,不要的濾掉,最後產生來源資料檢核表
SourceDataDailyCheckList table 要的ID 日期 還有不知名的isComplete
1.3 讀取FieldDefined 配上時間 問題 BelongTableID = DataID ?
這邊先中斷一下 改寫check List
2009年8月27日 星期四
SQL 主鍵 (Primary Key) & 外鍵(Foregin Key)
- 主鍵 (Primary Key)
用來獨一無二地確認一個表格中的每一行資料。主鍵可以是原本資料內的一個欄位,或是一個人造欄位 (與原本資料沒有關係的欄位)。主鍵可以包含一或多個欄位。當主鍵包含多個欄位時,稱為組合鍵 (Composite Key)。
MySQL:
CREATE TABLE Customer
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));
Oracle:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));
SQL Server:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));
以下則是以改變現有表格架構來設定主鍵的方式:
MySQL:
ALTER TABLE Customer ADD PRIMARY KEY (SID);
Oracle:
ALTER TABLE Customer ADD PRIMARY KEY (SID);
SQL Server:
ALTER TABLE Customer ADD PRIMARY KEY (SID);
請注意,在用ALTER TABLE語句來添加主鍵之前,我們需要確認被用來當做主鍵的欄位是設定為 『NOT NULL』 ;也就是說,那個欄位一定不能沒有資料。
外鍵(Foregin Key)
外來鍵是一個(或數個)指向另外一個表格主鍵的欄位。外來鍵的目的是確定資料的參考完整性(referential integrity)。換言之,只有被准許的資料值才會被存入資料庫內。
以下列出幾個在建置 ORDERS 表格時指定外來鍵的方式:
以下列出幾個在建置 ORDERS 表格時指定外來鍵的方式:
MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));
Oracle:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);
SQL Server:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date datetime,
Customer_SID integer references CUSTOMER(SID),
Amount double);
以下的例子則是藉著改變表格架構來指定外來鍵。這裡假設 ORDERS 表格已經被建置,而外來鍵尚未被指定:
MySQL:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
SQL Server:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
- 總之,這兩個東西,主鍵是用來當一個表格裡唯一識別的欄位(大家都不一樣),外鍵是表格裡ref到別的表格裡的主鍵的欄位,一個是類似index的東東,一個是跟別的表格建立關係並保持資料儲存的完整性,也就是說,你要存就要跟有關連的一起存,不然會error你降! (應該是降把......
SQL Join
記一下SQL語法 由網路上找來的資料
JOIN------------------------------------------------
先分兩大類Inner和Outter
Inner 只顯示匹配的行.
Outter 不論是否匹配,都顯示行 (所以可能會有null的東西)
------------------------------------------------
實際上有6種
Inner Join 類似好幾個where的用法 return all rows from both tables where there is a match
Natural Join 自然連接有 NATURAL JOIN、NATURAL LEFT JOIN、NATURAL RIGHT JOIN,兩個表格在進行 JOIN 時,加上 NATURAL 這個關鍵字之後,兩資料表之間同名的欄位會被自動結合在一起。
Left Outer Join 左邊顯示左表的東西,右邊顯示右表批配的,沒有顯示null
Right Outer Join 以上類推
Full Outer Join 上面兩個合體
Cross Join 乘積
------------------------------------------------
以上資料來自 http://www.wretch.cc/blog/sky4s/2250385
------------------------------------------------
接下來就是例子了 (出處http://webdesign.piipo.com/sql/sql_inner_join)
.................................................................
Innter Join語法 :
SELECT table_column1, table_column2···
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name;
or
SELECT table_column1, table_column2···
FROM table_name1
INNER JOIN table_name2
USING (column_name);
查詢實例
customers : C_Id Name City Address Phone
orders : O_Id Order_No C_Id
SELECT customers.Name, orders.Order_No
FROM customers
INNER JOIN orders
ON customers.C_Id=orders.C_Id;
此為查詢所有客戶定單的語法
..................................................................
Left Outter Join/Right Outter Join語法
SELECT table_column1, table_column2···FROM table_name1 LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name;
查詢實例
SELECT customers.Name, orders.Order_No FROM customers LEFT JOIN
ordersON customers.C_Id=orders.C_Id;
左表都會顯示,右表沒match到的部份會留null (Left)
右表都會顯示,左表沒match到的部份會留null (Right)
.....................................................................
Full Outter Join語法
SELECT table_column1, table_column2···
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name;
查詢實例
SELECT customers.Name, orders.Order_No FROM customers FULL JOIN
ordersON customers.C_Id=orders.C_Id;
左右表不管合不合都列,不合留null,算整合Left & Right的結果把
........................................................................
Left /Right/Full 三種用法近似,只差結果留null的方向
........................................................................
CROSS JOIN 語法
SELECT table_column1, table_column2···FROM table_name1 CROSS JOIN table_name2;
查詢實例
SELECT customers.Name, orders.Order_No FROM customers CROSS JOIN orders;
互相一一對應,產生乘積的結果
.........................................................................
NATURAL JOIN 語法
SELECT table_column1, table_column2···FROM table_name1
NATURAL JOIN table_name2;
查詢實例
SELECT customers.Name, orders.Order_No FROM customers
NATURAL JOIN orders;
欄位有批配的結果才列出
好了先寫到這邊,有機會在補充
JOIN------------------------------------------------
先分兩大類Inner和Outter
Inner 只顯示匹配的行.
Outter 不論是否匹配,都顯示行 (所以可能會有null的東西)
------------------------------------------------
實際上有6種
Inner Join 類似好幾個where的用法 return all rows from both tables where there is a match
Natural Join 自然連接有 NATURAL JOIN、NATURAL LEFT JOIN、NATURAL RIGHT JOIN,兩個表格在進行 JOIN 時,加上 NATURAL 這個關鍵字之後,兩資料表之間同名的欄位會被自動結合在一起。
Left Outer Join 左邊顯示左表的東西,右邊顯示右表批配的,沒有顯示null
Right Outer Join 以上類推
Full Outer Join 上面兩個合體
Cross Join 乘積
------------------------------------------------
以上資料來自 http://www.wretch.cc/blog/sky4s/2250385
------------------------------------------------
接下來就是例子了 (出處http://webdesign.piipo.com/sql/sql_inner_join)
.................................................................
Innter Join語法 :
SELECT table_column1, table_column2···
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name;
or
SELECT table_column1, table_column2···
FROM table_name1
INNER JOIN table_name2
USING (column_name);
查詢實例
customers : C_Id Name City Address Phone
orders : O_Id Order_No C_Id
SELECT customers.Name, orders.Order_No
FROM customers
INNER JOIN orders
ON customers.C_Id=orders.C_Id;
此為查詢所有客戶定單的語法
..................................................................
Left Outter Join/Right Outter Join語法
SELECT table_column1, table_column2···FROM table_name1 LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name;
查詢實例
SELECT customers.Name, orders.Order_No FROM customers LEFT JOIN
ordersON customers.C_Id=orders.C_Id;
左表都會顯示,右表沒match到的部份會留null (Left)
右表都會顯示,左表沒match到的部份會留null (Right)
.....................................................................
Full Outter Join語法
SELECT table_column1, table_column2···
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name;
查詢實例
SELECT customers.Name, orders.Order_No FROM customers FULL JOIN
ordersON customers.C_Id=orders.C_Id;
左右表不管合不合都列,不合留null,算整合Left & Right的結果把
........................................................................
Left /Right/Full 三種用法近似,只差結果留null的方向
........................................................................
CROSS JOIN 語法
SELECT table_column1, table_column2···FROM table_name1 CROSS JOIN table_name2;
查詢實例
SELECT customers.Name, orders.Order_No FROM customers CROSS JOIN orders;
互相一一對應,產生乘積的結果
.........................................................................
NATURAL JOIN 語法
SELECT table_column1, table_column2···FROM table_name1
NATURAL JOIN table_name2;
查詢實例
SELECT customers.Name, orders.Order_No FROM customers
NATURAL JOIN orders;
欄位有批配的結果才列出
好了先寫到這邊,有機會在補充
訂閱:
意見 (Atom)
