有沒有什麼辦法在Interbase firebird的一個選擇過程中有兩個不同的where子句?有沒有什麼辦法在Interbase firebird的一個選擇過程中有兩個不同的where子句?
我創建了兩個表來支持這個問題。所需的輸出是,即使表SAMPLE_DOUBLE中沒有SINGLE_PK,選擇過程也會顯示錶SAMPLE_SINGLE中的所有數據。
CREATE TABLE SAMPLE_SINGLE (
SINGLE_PK SMALLINT NOT NULL,
SINGLE_NAME VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ISO8859_1,
SINGLE_AMOUNT SMALLINT,
SINGLE_QUANTITY SMALLINT);
CREATE TABLE SAMPLE_DOUBLE (
DOUBLE_PK SMALLINT NOT NULL,
SINGLE_PK SMALLINT,
DOUBLE_QUANTITY SMALLINT);
CREATE PROCEDURE SELECT_FROM2TABLES
RETURNS(
SINGLE_NAME VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ISO8859_1,
SINGLE_AMOUNT SMALLINT,
SINGLE_QUANTITY SMALLINT,
TOTAL_DOUBLE_QUANTITY SMALLINT,
REMAINING_QUANTITY SMALLINT)
AS
BEGIN
FOR
SELECT
A.SINGLE_NAME,
A.SINGLE_AMOUNT,
A.SINGLE_QUANTITY,
SUM(B.DOUBLE_QUANTITY),
A.SINGLE_QUANTITY - SUM(B.DOUBLE_QUANTITY)
FROM SAMPLE_SINGLE A, SAMPLE_DOUBLE B
WHERE A.SINGLE_PK = B.SINGLE_PK
GROUP BY
A.SINGLE_NAME,
A.SINGLE_AMOUNT,
A.SINGLE_QUANTITY
INTO
:SINGLE_NAME,
:SINGLE_AMOUNT,
:SINGLE_QUANTITY,
:TOTAL_DOUBLE_QUANTITY,
:REMAINING_QUANTITY
DO
BEGIN
SUSPEND;
END
END;
對於此選擇過程只會顯示從具有本表SAMPLE_DOUBLE因爲
FROM SAMPLE_SINGLE A, SAMPLE_DOUBLE B
WHERE A.SINGLE_PK = B.SINGLE_PK
我還要顯示從表A的數據的SINGLE_PK表SAMPLE_SINGLE數據中不存在表B.
這裏是樣本數據,
Table A (SAMPLE_SINGLE) SINGLE_PK SINGLE_NAME SINGLE_AMOUNT SINGLE_QUNATITY
1 asdf 100 5
2 qwer 50 7
Table B (SAMPLE_DOUBLE) DOUBLE_PK SINGLE_PK DOUBLE_QUANTITY
1 1 3
我在選擇過程所需的輸出,
SINGLE_NAME SINGLE_AMOUNT SINGLE_QUANTITY TOTAL_DOUBLE_QUANTITY RMAINING_QUANTITY
asdf 100 5 3 2
qwer 50 7 0 7
這裏是因爲WHERE A.SINGLE_PK = B.SINGLE_PK,它將只顯示第一行的上述過程的實際結果,
SINGLE_NAME SINGLE_AMOUNT SINGLE_QUANTITY TOTAL_DOUBLE_QUANTITY RMAINING_QUANTITY
asdf 100 5 3 2
Interbase和Firebird不是同一個數據庫系統。在過去的18年中,他們已經發生了很多分歧,所以你不能依靠一個人的回答來申請另一個人。所以選擇:Firebird或者interbase –