Ausgabemenge einschränken

loddarmattheus

Erfahrenes Mitglied
Hallo Freunde,

hab mal wieder ein kleines Denkproblem und bin mit der Suche nicht weitergekommen.
Ich habe zwei Tabellen (bestellung und produkte), die über die produkt_id miteinander angesprochen werden können.

Ziel ist es, aus der Tabelle "bestellung" die Gesamtanzahl der Topprodukte mittels COUNT zu ermitteln und das Ergebnis anschließend nochmals durch die Tabelle "produkte" durchlaufen zu lassen, um zu gucken, ob das Produkt mit der ID überhaupt noch existiert.

PHP:
$bestellungen = mysql_query("SELECT produkt_id, COUNT(*) AS top FROM bestellung WHERE (anzahl >0 AND produkt_id >0) GROUP BY produkt_id ORDER BY top DESC");
while($row = mysql_fetch_array($bestellungen))
	{
	$filter = mysql_query('SELECT produkt_id, name FROM produkt WHERE produkt_id = "'.$row['produkt_id'].'"');
	while($row2 = mysql_fetch_array($filter))
		{
		echo "<tr><td>".$row2['produkt_id']."</td><td>".$row['top']."</td></tr>"; 
		}
	}

Im Ergebnis zeigt er mir jetzt auch absteigend die (noch vorhandenen) Topprodukte an.

15862 42
14817 37
14720 32
14812 29
14806 29
14714 28
16106 22
14791 20
14705 19
14713 19
15035 19
16027 18
usw.


Ich will aber erreichen, dass er mir nur die ersten 5 meistverkauften Produkte anzeigt. Da dachte ich mir, ich füge in die erste Query ein LIMIT 5 ein. Das funktioniert nicht, da er zunächst alle jemals gekauften Topprodukte auf 5 limitiert, anschließend aber nochmal diese 5 durch den nächsten Query auf die noch vorhandenen Produkte einschränkt. Im Ergebnis zeigt er mir dann halt 2 Produkte an.

Weiss jemand Rat? Vielleicht läßt sich ja auch die Ausgabemenge durch eine Zählerschleife auf 5 limitieren.

Loddar

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Man(n) kann nicht alles wissen, aber vieles erfragen.
 
Fasse doch einfach beide Abfragen zusammen:
PHP:
<?php
	[…]
	$query = "
		SELECT
		        `produkt_id`,
		        COUNT(`b`.*) AS `_anzahl`,
		        `p`.`name`

		  FROM
		        `bestellung` `b`,
		        `produkt` `p`

		  WHERE
		        `b`.`.produkt_id` = `p`.`produkt_id`
		    AND `b`.`anzahl` > 0
		    AND `b`.`produkt_id` > 0

		  GROUP BY
		        `produkt_id`

		  ORDER BY
		        `_anzahl`

		  LIMIT
		        0, 5
		";
	$result = mysql_query($query);
	while( $row = mysql_fetch_array($result) ) {
		echo '<tr><td>'.$row['produkt_id'].'</td><td>'.$row['_anzahl'].'</td></tr>';
	}
	[…]
?>
 
Zurück