DISQLite3 - jak poprawnie skonstruować zapytanie

0

Witam,
Uczę się baz danych. Używam SQLite (DISQLite3 dla Delphi). Zaprojektowałem sobie układ 3 tabel, z których zczytuję dane... Niestety, nie umiem sobie poradzić
z jednym przypadkiem... Poniżej przedstawiam przykład.

Mamy 3 tabele:
BAZA_T, DOKUMENT_T, INDEX_T

BAZA_T ID (Integer) DOKUMENT (Integer) INDEX1 (Integer) INDEX2 (Integer) INDEX3 (Integer)
DOKUMENT_T ID (Integer) DOC (TEXT)
INDEX_T ID (Integer) IND (TEXT)

Rekordy wepełnione danymi wyglądają np. tak:

BAZA_T 1 4 3 5 4
2 5 7 2 7
3 7 8 3 8
4 2 5 7 5
etc..

DOKUMENT_T 1 'Jakiś dokument1'
2 'Jakiś dokument2'
3 'Jakiś dokument3'
4 'Jakiś dokument4'
etc...

INDEX_T 1 'Pierwszy indeks'
2 'Drugi indeks'
3 'Trzeci indeks'
4 'Czwarty indeks'
5 'Piąty indeks'
5 'Szósty indeks'
etc...

Jakie zapytanie zrobić, żeby wyświetlić dane z tabeli BAZA_T (posiłkując się
danymi z tabel DOKUMENT_T oraz INDEX_T) w ten sposób, że:

Np dla 1 rekordu: BAZA_T 1 4 3 5 4

Wynik: 1 'Jakiś dokument4' 'Trzeci indeks' 'Szósty indeks' 'Czwarty indeks'

Mam nadzieję, że problem nie jest trywialny, ale ja utknąłem... proszę o pomoc.
Potrafię odczytać tylko dokument z tabeli DOKUMENT_T oraz jedną wartość Index z tabeli INDEX_T :

SELECT BAZA_T.ID, DOKUMENT_T.DOC, INDEX_T.IND FROM BAZA_T, DOKUMENT_T, INDEX_T WHERE BAZA_T.DOKUMENT=DOKUMENT_T.ID AND BAZA_T.INDEX1=IndexT.ID AND BAZA_T.ID=1;',

Jak chcę dodać INDEX2 oraz INDEX3 to nie działa...

-Pawel

0

Musisz dowiązać Index_T tyle razy, ile masz pol w tabeli Dokument z niego korzystających. Za kazdym razem rób to do innego pola. I na Boga, rób to uzywając aliasów (będziesz musiał) i JOINow.

0

Czy mógłbyś dać przykład dla powyższych danych? Nigdy tego nie robiłem a zapytanie wydaje się być skomplikowane.

0

Coś w ten deseń:

SELECT b.id, d.doc, i1.ind as ind1, i2.ind as ind2, i3.ind as ind3
FROM Baza_T AS b JOIN Document_T AS d ON b.document=d.id JOIN INDEX_T AS i1 ON b.index1=i1.id JOIN INDEX_T AS i2 ON b.index2=i2.id JOIN INDEX_T AS i3 ON b.index3=i3.id

1 użytkowników online, w tym zalogowanych: 0, gości: 1