ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
407
407
EMPFEHLEN
-
15.01.12 16:33 #1
- Registriert seit
- Oct 2009
- Beiträge
- 123
hi,
ich hab folgendes problem:
Ich hab ne Tabelle Produzenten und eine Tabelle Bilder.
Nun müssen jedem Produzenten seine Bilder zugeordnet werden, so wie ich rausgefunden habe benutzt man dafür eine 3te Tabelle Produzenten_Bilder, wo dann die jeweiligen id´s zusammen stehn ... Jedoch weiss ich nich so recht wie ich dann alle Bilder von einem bestimmten Produzenten raussuchen kann ... nach meinen infos soll das wohl LEFT JOIN klappen ... aber ich werd da nich so ganz schlau drauß ... auch die mysql doku hat mir nich weiter geholfen
kann mir da einer bei dem mysql befehl helfen?
-
Gehört ein Bild immer zu genau einem Produzenten? Dann brauchst du keine dritte Tabelle, sondern die Tabelle "Bilder" bekommt eine Spalte "Produzent_id"
-
15.01.12 17:17 #3
- Registriert seit
- Oct 2009
- Beiträge
- 123
ähm nein, ein bild kann auch mehrere Produzenten haben
-
Ok, weil du geschrieben hast "Nun müssen jedem Produzenten seine Bilder zugeordnet werden". Das klang so, als wäre es 1:N
Tabellen:
Produzenten
id | name
Bilder
id | pfad
Produzenten_Bilder
Produzent_id | Bild_id
Alle Bilder für Produzent "1337"
Code sql:1 2 3
SELECT b.pfad FROM Bilder AS b JOIN (Produzenten_Bilder AS pb) ON (pb.Produzent_id = 1337 AND pb.Bild_id = b.id)
-
15.01.12 17:38 #5
- Registriert seit
- Oct 2009
- Beiträge
- 123
ah ok danke
kannst du mir die 3te zeile kurz erläutern? damit ich auch verstehe was da passiert
-
Die einfachste Art sich einen JOIN vorzustellen, ist das Kreuzprodukt (auch wenn es intern anders abläuft).
Also stell dir vor jede Zeile von Tabelle "Bilder" wird mit jeder Zeile in Tabelle "Produzenten_Bilder" zu einer Zeile vereinigt (join) und anschließend werden die Zeilen anhand der angegebenen Bedingung gefiltert.
Hast du z.B. folgende Beispiel Werte
Bilder:
id | pfad
1 | foo.jpg
2 | bar.jpg
3 | baz.jpg
Produzenten_Bilder
Produzent_id | Bild_id
43 | 1
1337 | 1
1337 | 3
Entsteht folgendes Kreuzprodukt
Bilder.id | Bilder.pfad | Produzenten_Bilder.Produzent_id | Produzenten_Bilder.Bild_id
1 | foo.jpg | 43 | 1
1 | foo.jpg | 1337 | 1
1 | foo.jpg | 1337 | 3
2 | bar.jpg | 43 | 1
2 | bar.jpg | 1337 | 1
2 | bar.jpg | 1337 | 3
3 | baz.jpg | 43 | 1
3 | baz.jpg | 1337 | 1
3 | baz.jpg | 1337 | 3
Jetzt werden alle Zeilen durchlaufen und auf die Bedingung geprüft (pb.Produzent_id = 1337 AND )
Also bleibt das hier übrig
Bilder.id | Bilder.pfad | Produzenten_Bilder.Produzent_id | Produzenten_Bilder.Bild_id
1 | foo.jpg | 43 | 1
1 | foo.jpg | 1337 | 1
1 | foo.jpg | 1337 | 3
2 | bar.jpg | 43 | 1
2 | bar.jpg | 1337 | 1
2 | bar.jpg | 1337 | 3
3 | baz.jpg | 43 | 1
3 | baz.jpg | 1337 | 1
3 | baz.jpg | 1337 | 3
Und das sind genau die beiden Bilder von Produzent 1337.
In Realität ist ein Kreuzprodukt viel zu aufwändig, aber jeder JOIN lässt sich immer auch so abbilden und verstehen.
Edit: Und bei einem LEFT JOIN (der hier nicht verwendet wurde), würden alle Zeilen von Tabelle "Bilder" auf jeden Fall vorkommen, auch wenn es keine Verbindung zu Produzenten_Bilder gibt. In unserem Beispiel hat aber jedes Bild auch einen Produzenten, also wäre das Ergebnis identisch. Mit einem LEFT JOIN ließen sich z.B. alle Produzenten finden, die keine Bilder haben.Geändert von CPoly (15.01.12 um 17:55 Uhr)
-
15.01.12 18:18 #7
- Registriert seit
- Oct 2009
- Beiträge
- 123
ahhja ok ...
und wenn ich alle Produzenten des bilds 5 haben will müsste das so aussehn oda?
Code sql:1 2 3
SELECT p.name FROM Produzent AS p JOIN (Produzenten_Bilder AS pb) ON (pb.Bild_id = 5 AND pb.Produzenten_id = p.id)
-
Ja, sollte so richtig sein.
Ähnliche Themen
-
[MySQL] LEFT JOIN-Fehler
Von ComFreek im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 08.01.11, 15:22 -
mysql LEFT OUTER JOIN?
Von wachteldonk im Forum Relationale DatenbanksystemeAntworten: 8Letzter Beitrag: 03.07.08, 10:06 -
[MySql] Problem mit LEFT JOIN
Von d-Stench im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 27.07.06, 22:34 -
[MySQL] zwei LEFT JOIN
Von sasuki im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 10.05.04, 21:21 -
[MySQL] zwei LEFT JOIN
Von sasuki im Forum PHPAntworten: 0Letzter Beitrag: 08.05.04, 20:10





Zitieren

Login





