我有两张桌子:
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
我试图按日期和导弹选择。作家应该在“1950”之前出生,而导演应该是“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'
但它不起作用:(
答案 0 :(得分: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年之前出生的导演“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的主键,那么在WHERE子句中使用ISBN而不是kategori可以获得更好的性能:
WHERE
a.bdate < #1950/01/01#
AND b.ISBN = 456
或者如果IBSN是文本而不是数字数据类型:
WHERE
a.bdate < #1950/01/01#
AND b.ISBN = '456'