[MySQL] Wie mach ich Sub-querrys?

B

blexxon

Gast
Hi,

also ich hab (wiedermal) ein problem :-)

es gibt zwei (in diesem zusammenhang) wichtige tabellen. kategorie und bilder.


ich hab den namen der kategorie in der tabelle kategorie.

Ziel ist es alles Billder einer bestimmten kategorie zu erhalten.


Nun muss ich ne Abfrage machen, welche id die kategorie hat in der tabelle kategorie.

Nun wenn ich diese id hab, kann ich die Tabelle Bilder durchsuchen (bei jedem bild wurde der fremdschlüssel , die relation zur kategorie mitgespeichert) und ich erhalte alle Bilder der gewünschten Kategorie.

Nun, wie kann ich des in einer Abfrage unterbringen, hab wirklich 1 Stunde herumprobiert, mit JOIN, IN und allem drunter und drüber, aber ist nix rausgekommen.

Ich hoff es geht nicht nur über den Weg, 2 Abfragen zu machen, zu lösen...



Danke


BleXXon
 

Nase

Lieutenant
Dabei seit
Jan. 2004
Beiträge
587
Könntest du mal eben den Aufbau deiner Tabellen aufschreiben. Ich blicke nicht ganz durch, wie das zusammenhängen soll.
 
B

blexxon

Gast
Tabelle: Kategorie

id | name


Tabelle: Bilder

id | name | kat_id


Die in Fett, hängen zusammen, ich bekomm am anfang den namen der kategorie, hier krusiv gekennzeichnet...


ich hoff so ist es übersichtlicher
 

Nase

Lieutenant
Dabei seit
Jan. 2004
Beiträge
587
Ok, eben nur schnell eine Datenbank erstellen müssen.


PHP:
SELECT bilder.name FROM bilder, kategorie WHERE kategorie.name = 'kat1' && bilder.kat_id = kategorie.id
Damit erhälst du alle Namen der Bilder, die zum Kategorienamen "kat1" gehören. So wie du es oben beschrieben hast, ist der Name der Kategorie ja bekannt.
 

oDeM

Lt. Junior Grade
Dabei seit
Sep. 2002
Beiträge
374
Das nennt man aber JOIN und nicht Subquery bzw. Subselect.
Subselects funken mit MySQL nicht. Mal davon abgesehen, dass Subselects super lahm sind.

Also ein Join ist schon die richtige Methode,
Was noch interessant für dich sein könnte sind OUTER Joins
 
B

blexxon

Gast
Zitat von Nase:
Ok, eben nur schnell eine Datenbank erstellen müssen.


PHP:
SELECT bilder.name FROM bilder, kategorie WHERE kategorie.name = 'kat1' && bilder.kat_id = kategorie.id
Damit erhälst du alle Namen der Bilder, die zum Kategorienamen "kat1" gehören. So wie du es oben beschrieben hast, ist der Name der Kategorie ja bekannt.

Super, danke!

Funktioniert.
 
Top