Problem mit Sortierung/ mysql -Abfrage

SuperSonik

Erfahrenes Mitglied
Hallo Leute,
ich habe folgendes Problem.
Dieser Code generiert mir eine Tabelle:

PHP:
$sql = "SELECT DISTINCT produkt_uid FROM shop_zugriffe WHERE createdate BETWEEN '".date("Y-m-d H:i:s",$startzeitpunkt)."' AND '".date("Y-m-d H:i:s",$endzeitpunkt)."' AND seitentyp='Artikelanzeige' ";
$result=mysql_query($sql,$conn1) or die("$sql <br>");

while($treffer=mysql_fetch_assoc($result))
{
	
	$sql2 = "SELECT COUNT(shop_zugriffe.UID) FROM shop_zugriffe WHERE shop_zugriffe.produkt_uid='".$treffer["produkt_uid"]."' ";
	$result2=mysql_query($sql2,$conn1) or die("$sql2 <br>");
	$treffer2=mysql_fetch_assoc($result2);
	$tabelle .= "<tr>
        <td>".$treffer2["shop_produkttexte.name"]."</td>
        <td>".$treffer2["COUNT(shop_zugriffe.UID)"]."</td>";
	$tabelle .= "<td>"."<a href=".$shema."://".$DOMAIN.$SUBDIRECTORY."/shop/php/artikel_detail.php?artikel_uid=".$treffer["produkt_uid"]." target=_blank >zur Seite</a>"."</td>";
	$tabelle .="</tr>";
}

Ich hätte die einzelnen Zeilen jedoch gerne nach COUNT(shop_zugriffe.UID) sortiert.
Also die Zeile mit dem höchsten COUNT zuerst. Irgendwie muß man das doch schon mit SQL hinbekommen. - Ich bekomme es nur gerade irgendwie nicht gebacken. :-(
Danke schonmal.
SuperSonik
 
PHP:
 $sql2 = "SELECT COUNT(shop_zugriffe.UID)as anzahl FROM shop_zugriffe WHERE shop_zugriffe.produkt_uid='".$treffer["produkt_uid"]."' order by anzahl desc";
    $result2=mysql_query($sql2,$conn1) or die("$sql2 <br>");
    $treffer2=mysql_fetch_assoc($result2);
    $tabelle .= "<tr>
        <td>".$treffer2["shop_produkttexte.name"]."</td>
        <td>".$treffer2["anzahl"]."</td>";
 
Danke erstmal für Deine Antwort.
Bist Du sicher das Dein Code mein Problem löst?
Ich glaube die Sortierung funktioniert nicht da ich ja mit
PHP:
WHERE shop_zugriffe.produkt_uid='".$treffer["produkt_uid"]
die Ergebnissmenge auf einen Count einschränke, da ist dann nichts zu sortieren.
Man müsste irgendwie beide SQL-Statements zusammen fassen.
Gruß,
Sonik
 
Da könntest du recht haben...
schreib mal die tabellen struktur von beiden auf, dann kann man als außenstehender besser den zusammenhang erkennen.
 
Es geht eigentlich nur um eine Tabelle "shop_zugriffe"
Die Tabelle sieht so aus:

PHP:
CREATE TABLE `shop_zugriffe` (
  `UID` int(4) NOT NULL auto_increment,
  `produkt_uid` int(8) unsigned default NULL,
  `kategorie_uid` int(8) unsigned default NULL,
  `seitentyp` varchar(50) NOT NULL default 'nicht definiert',
  `ausfuehrungszeit` decimal(10,8) unsigned NOT NULL default '0.00000000',
  `sessionid` varchar(100) default NULL,
  `createdate` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`UID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1166 ;

Was ich brauche ist in etwa : SELECT den COUNT für jede produkt_uid bei dem createdate zwischen X und Y liegt, sortiert nach COUNT
 
wenn ich das jetzt auf die schnelle richtig gesehen habe, dann sollte dies funktionieren...
PHP:
select .*, count(produkt_uid) as anzahl from shop_zugriffe where createdate between x and y group by produkt_uid order by anzahl desc
 
Zurück