2012-08-10 37 views
1

想象兩個表在同一個Access數據庫中;ASP訪問dababase - SQL連接查詢

Transaction 
- Date 
- Time 
- TransactionNumber 
- UniqueID 
- Exception (boolean) 

(TransactionNumber是在同一天的記錄順序的整數,然後再從0每一天開始。關鍵領域是UniqueID的)

Exceptions 
- ExceptionNumber 
- Date 
- Time 
- TransactionNumber 
- ExceptionReason 

(ExceptionNumber是相同的記錄順序整數然後再從0開始。TransactionNumber與Transactions中的值相同,其中Date在兩個表中都是相同的)

其中Transaction.Exception爲TRUE時,與該Transaction相關的記錄也將出現在Exceptions中。

我想從事務輸出所有記錄,並且其中Transaction.Exception碰巧對於記錄爲TRUE,那麼我想要一個顯示Exception.ExceptionReason的列。對於其他記錄,它應該是空白的。

我不知道這是如何可能的。如果您通過Date和TransactionNumber字段關聯這兩個表,那麼只會看到Transaction.Exception = TRUE的記錄。

+2

由於異常與特定事務相關,將事務uniqueID放入異常表而不是'TransationNumber'和'Date'會更好嗎?您可以將該字段指定爲交易表的FK。 – AnthonyWJones 2012-08-10 12:46:11

+0

對於Date + Transaction Number的每個組合,異常只能有一行,因爲任何給定的Transaction都可能是異常,或者不是異常。每筆交易只能有一個例外。另外,我不能修改數據庫設計。 – 2012-08-10 14:49:17

回答

1

這聽起來像我LEFT JOIN可以完成你想要的。

SELECT 
    t.[Date], 
    t.[Time], 
    t.TransactionNumber, 
    t.[Exception], 
    e.ExceptionReason 
FROM 
    [Transaction] AS t 
    LEFT JOIN Exceptions AS e 
    ON 
     t.[Date] = e.[Date] 
     AND t.TransactionNumber = e.TransactionNumber 
+0

在連接中只要'TransactionNumber'就足夠了。 – AnthonyWJones 2012-08-10 12:38:53

+0

@AnthonyWJones Ben說:「TransactionNumber是同一天記錄的順序整數,然後每天從0開始。」 – HansUp 2012-08-10 12:40:14

+0

哦,是的,我看到了,我的壞。 – AnthonyWJones 2012-08-10 12:43:22