Right Join
-
Hallo,
ich hab ein kleines Problem, ich hab mir ne Datenbank geschrieben, die hat zwei Tabelle...
tab_Band (Bands von meinem Musikarchiv)
Struktur:
+-----------+--------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+------------+----------------+
| BandLfdNr | int(11) | | PRI | NULL | auto_increment |
| BandName | varchar(255) | | | | |
| BandDate | date | | | 0000-00-00 | |
| BandTime | time | | | 00:00:00 | |
| BandGenre | varchar(255) | | | | |
+-----------+--------------+------+-----+------------+----------------+tab_Alben (Alben von jeder Band)
Struktur:
+--------------------+--------------+------+-----+-----------------+------------
| Field | Type | Null | Key | Default | Extra
+--------------------+--------------+------+-----+-----------------+------------
| AlbenLfdNr | int(11) | | PRI | NULL | auto_increm
| AlbenName | varchar(255) | YES | | NULL |
| BandAlbum | int(11) | YES | | NULL |
| AlbenDate | date | YES | | NULL |
| AlbenTime | time | YES | | NULL |
| AlbenMetalArchivID | varchar(255) | | | keine Angaben |
| AlbenRating | varchar(255) | | | keine Bewertung |
+-------------------------------------------------------------------------------BandAlbum beinhaltet den Primärschlüssel der Band wo das Album hinzugehört, nur wenn ich jetzt solch eine Abfrage mache:
SELECT BandLfdNr, BandName FROM tab_bands RIGHT JOIN tab_alben ON BandAlbum = BandLfdNr;
Die ausgabe sieht momentan dann bei mir so aus....
+-----------+-------------+|
BandLfdNr | BandName
|+-----------+-------------+|
3 | Aaskereia ||
1 | 1349 ||
1 | 1349 ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
141 | Iron Maiden ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone ||
72 | Darkthrone |
+-----------+-------------+ich möchte aber nur alle alben von Iron Maiden oder halt der Band nach der ich evetuell suchen könnte, ich danke für eure hilfe.
btw: hab natürlich schon versucht ne where-klausel einzubinde, das funktioniert bei mir irgendwie net, aber der Computer hat schliesslich "immmer" schuld :p
M.f.G Frostilein
-
"SELECT b.BandName,a.AlbunLfdNr, a.AlbenName FROM tab_Alben a LEFT JOIN tab_Band b ON b.BandLfdNr=a.BandAlbum WHERE b.BandName LIKE 'Iron%'"
Das würde dir alle Alben, aller Bands liefern, die mit "Iron" beginnen...
Also ich arbeite eigendlich immer mit LEFT JOIN (der Rest ist mir zu unlogisch/nicht geläufig )
Da gehst du immer von der Tabelle aus, von der du etwas wissen willst und Joinst die mit den "Detail-Info-Tabellen"
Also in diesem Fall möchtest du
alle Alben habe
+Bandname
+nur von bestimmten Bands
-
jo, super... so wollte ich das haben, genau so
komisch ist nur, das ich das auch so mal versucht habe, hat aber nie hingehauen, naja. Aber egal, Problem gelöst. DANKE!!!
-
Vielleicht noch ein Tip am Rande: Das BandGenre würde ich eine eigene Tabelle auslagern.
-
stimmt, redudante daten vermeiden, oder wie war das noch in schule?
Gruß Frostilein
-
Exakt.