PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL] Welche Art von Joins brauche ich?


Gast
2009-06-19, 22:47:29
Hallo!

Folgende Situation, ich habe diese Tabellen in einer MySQL-Datenbank:

"Main". Felder: name, typ, detail1-id, detail2-id
"detail1". Felder: id, name
"detail2". Felder: id, name

In Main werden Artikel gespeichert. Direkt allerdings nur der Name und der Typ, die Details des Artikel sind in den anderen beiden Tabellen untergebracht - die Tabelle Main hat nur die ID gespeichert, unter welcher die Details in den anderen beiden Tabellen untergebracht sind.

Beim Auslesen und Anzeigen von Einträgen aus "Main" sollen detail1-id und detail2-id allerdings nicht die ID anzeigen, sondern den dazugehörenden namen aus den Tabellen detail1 und detail2.

Ich denke, ich komme da um diese Joins nicht drumherum. Könnt ihr mir allerdings sagen, welche Art von Joins dazu am geeignetsten sind? (natural, left, right, outer, inner usw..).

Das hier ist definitiv kein Thread a la: "Dies und das will ich, macht das für mich". Ich werde mich auch selbst einlesen, aber es wäre sehr nett, wenn ihr auch etwas pseudo-code liefern könntet.


Vielen Dank!

Superguppy
2009-06-19, 22:58:06
In dem Fall gehört da ein (eigentlich zwei) INNER JOIN, sofern du nur Ergebnisse haben möchtest, wo es Details in beiden Zusatztabellen gibt.

Nur wenn du auch Ergebnisse willst, wo keine Details zum Artikel dazu existieren, kommen OUTER JOINs ins Spiel.

Gast
2009-06-20, 00:15:24
1. left join
2. dann nen outer join

Matrix316
2009-06-20, 17:58:07
Entweder mit inner join oder so

select
(select Name from detail1 where id = a.detail1-id) as DetailName
from Main a


Beim joinen haste halt immer alle Daten aller joins zur Verfügung, während mit dem Select du gezielt auf bestimmte Spalten zugreifst. Musst halt aufpassen wegen den where Klauseln bei der Unterabfragenvariante.