sql ms access выбор по дате и жанру - PullRequest
0 голосов
/ 02 августа 2010

У меня есть две таблицы:

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", а категория должна быть "Поэси"

Результат должен быть:

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'

Но это не сработало: (

1 Ответ

1 голос
/ 02 августа 2010

Вам нужен метод для сопоставления записи из первой таблицы с ее категорией во второй таблице.Я предполагал, что 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, вы можете получить более высокую производительность, используя ISBN, а не kategori в предложении WHERE:

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

или если IBSN является текстовым, а не числовым типом данных:

WHERE
    a.bdate < #1950/01/01#
    AND b.ISBN = '456'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...