DB Abfrage eleganter lösen

schleckerbeck

Erfahrenes Mitglied
Hi,

ich will alle Produkte eines Herstellers ausgeben. Ich habs bis jetzt wie folgt gelöst:

PHP:
$sql = mysql_query("Select name from hersteller")
while($result = mysql_fetch_row($sql))
{
   $sql2 = mysql_query("Select * from produkte where h_id='$result[0]'");
   while($result2 = mysql_fetch_row($sql2))
   {
      echo $result2[1];
   }
}

Hier die Datenbankstruktur:

hersteller
id | name
1 | korg

produkte
id | name | beschreibung | preis | h_id
1 | pa80 | beschreib | 1299 | 1

Die h_id ist der Fremdschlüssel der von der Tabelle hersteller bezogen wird.

Jetzt meine Frage: Kann man das nicht irgendwie eleganter mit z. B. nur einer DB Abfrage lösen?

thx!
 
Also wenn die id in hersteller mit der h_id in produkte identisch ist, dann so:
PHP:
$sql = mysql_query("Select * from produkte, hersteller where hersteller.id=h_id")
while($result = mysql_fetch_row($sql))
{
  echo $result;
}

redlama

P.S. Ist aber nicht getestet!
 
Willst du jetzt die Produke eines oder aller Hersteller?
Denn so wie dein Code aufgebaut ist, werden proHersteller alle Produkte ausgeliefert.

Wenn du die eines Hersteller willst, ist dir ja der hersteller und somit auch dessen Primärschlüssel bekannt und somit auch der Fremschlüssel für die Produktabelle.

Also langt eigentlich
SELECT * FROM `Produkte` WHERE `h_id`=id_des_entsprechenden_herstellers

ist halt die Frage was du genau haben willst...
 
Ja, ich will die Produkte aller Hersteller ausgeben. Es sieht wie folgt bei mir aus:
Korg
- Prod1
- Prod2

Ibanez
- Prod1
- Prod2

etc.pp.
 
Zurück