Seite 1 von 1

Verknüpfte Tabellen in einer Abfrage

Verfasst: Fr, 04.08.2006 20:10
von ich
Hallo
Ich habe eine DB in OO mit dem Pinguin (Linux). Diese enthält u a zwei Tabellen. In der ersten Tabelle sind diverse Spalten mit dem Primärindex der zweiten, um auf ihre Werte Bezug zu nehmen. Jetzt möchte ich eine Abfrage erstellen, die nach Angabe des Namens der ersten Tabelle diesen und mehrere Felder der zweiten Tabelle zeigt. Ich habe schon mehrere Hilfen. Assistenten usw probiert, aber ohne Erfolg und hoffe auf eure Hilfe, danke.

Verfasst: Mo, 07.08.2006 19:52
von komma4
Hallo Du,

Tabelle1:
id1,name,id2

Tabelle2:
id2,spalte1,spalte2,...,spalte99

Code: Alles auswählen

SELECT "t1"."name", "t2"."spalte1", "t2"."spalte4" FROM "Tabelle1" AS t1, "Tabelle2" AS t2 WHERE "name" = :Name AND "t1"."id2" = "t2"."id2"
Der Eintrag ":Name" öffnet bei der Ausführung einen Eingabedialog.

Meinst Du so etwas?

Erlaeurterngen

Verfasst: Di, 08.08.2006 09:01
von ich
Hallo Winfried
Das Ganze ist eine etwas überdimensionierte Musikdatei, ich moechte gerne wissen, wie SQL arbeitet. Ich gehe von zwei Tabellen aus. Die erste Tabelle beinhaltet im Wesentlichen die Alben und hat je eine Spalte fuer Primaeindex, Musiker, usw, eine Menge Spalten fuer die einzelnen Titel. Die zweite Tabelle ist fuer die Zuordnung wer wo mit macht und hat neben den Primaerndex der Musiker, der Namen der Musiker, und eine Menge Spalten, in denen der Primaerindex der Musik steht. Damit kann ich Abhaengigkeiten zB fuer Leute wie Phil Collins abbilden, der bei der ersten Genesis Platte nicht mit gemacht hat, dafuer aber Solo, bei Genesis, bei Brand X und divrse mal als Gastmusiker. Das ist also eine klassische m zu n Beziehung, was ich mit den vielen Spalten bei den Musikern versucht habe zu realisieren. SQL bietet von Haus aus ja nur eine 1 zu n Beziehung. Was ich suche ist eine Abfrage in OO die mir bei Eingabe eines Musikernamens seine Alben aufführt.
Ich weiss, es ist etwas zu kompliziert fuer diesen Zweck, aber das kommt wenn ein Akademiker Langeweile hat.