2010-08-02 67 views
0

選擇我有兩個表:MS SQL訪問日期和流派

fID Enamn Fnamn bdate 
1 Ronge Paus 49-05-14 
2 Nesser Håk 50-07-26 
3 Bods Thomas 51-05-02 

而且

ISBN  cathegory 
123 Prosa 
456 Poesi 
789 Thriller 

我想按日期和cathegory選擇。筆者shoult前一年 「1950年」 出生和cathegory應該是 「Poesi」

結果應該是:

ISBN cathegory fID Enamn Fnamn bdate 
456 poesi  1 Ronge Paus 49-05-14 

我已經試過跟隨着:

SELECT * 
FROM bok, författare 
WHERE bdate BETWEEN #01/01/40# AND #01/01/50# AND kategori = 'poesi' 

但它沒't work :(

+0

是在Ronge記錄在第二個表中與Poesi記錄相關的第一個表中? – 2010-08-02 17:10:19

回答

1

您需要一種方法將第一個表中的記錄與第二個表中的類別進行匹配我假定ISBN是第二個表中的主鍵,因此將其用作外鍵在第一個表格中。

我對錶名不清楚,所以我用自己的名字替換了。注意我還假定bdate是日期/時間數據類型。下面是我的表的版本是這樣的:

TBLA:

fID Enamn Fnamn bdate  fkey_ISBN 
1 Ronge Paus 49-05-14 456 
2 Nesser Håk 50-07-26 123 
3 Bods Thomas 51-05-02 789 

TBLB:

ISBN cathegory 
123 Prosa 
456 Poesi 
789 Thriller 

然後,爲了獲得1950年之前出生的cathegory 「Poesi」 的作家,使用此查詢:

SELECT 
    a.fkey_ISBN, 
    b.cathegory, 
    a.fID, 
    a.Enamn, 
    a.Fnamn, 
    a.bdate 
FROM 
    tblA AS a 
    INNER JOIN tblB AS b 
    ON a.fkey_ISBN = b.ISBN 
WHERE 
    a.bdate < #1950/01/01# 
    AND b.kategori = 'poesi'; 

編輯:如果ISBN其實TBLB的主鍵,您可以通過,而不是駕駛員學校使用ISBN得到更好的性能你的WHERE子句:

WHERE 
    a.bdate < #1950/01/01# 
    AND b.ISBN = 456 

,或者如果IBSN是文本,而不是數字數據類型:

WHERE 
    a.bdate < #1950/01/01# 
    AND b.ISBN = '456' 
+0

感謝您的回答。我會回到ASA,我看到這個答案之前,從舊版本的舊版本中退出。 – jdnhldn 2010-08-03 14:53:58