Datenbankabfrage Problem

maxxe

Grünschnabel
Guten Tag,

ich versuche schon die ganze Zeit meine Produkte nach Hit´s von meiner Datenbank auszulesen.
Jetzt gibt es nur ein Problem das ganze wird nich nach den Hit´s geordnet.

Wenn ich ein Produkt hinzufüge wird das so eingetragen:

produkt 1

p_name = Spiel ALPHA
p_title = XYC PS3
p_buy = 100

Zweites Produkt

p_name = Spiel ALPHA
p_title = XYC Xbox360
p_buy = 110

Jetzt soll nur das mit den meisten buy angezeigt werden.
Also nicht beide Produkte sondern nur das zweite Produkt mit den 110 buy

Abfrage
Code:
$top_prod = dbquery("SELECT  p_name, p_id, p_cover, p_desc, p_time, p_views, p_type, p_buy FROM ".DB_WERT."produkt WHERE p_status='1' GROUP BY p_name  ORDER BY p_buy DESC LIMIT 20 ");

Kann mir das vllt. jemand helfen


Mit freundlichen Grüßen

Maxxe
 
das Problem ist dass nur der link mit dem wenigerem buy aber manchmal auch beide angezeigt werden.


so hier mal die function:

PHP:
function dbquery($query) {
	$result = @mysql_query($query);
	if (!$result) {
		echo mysql_error();
		return false;
	} else {
		return $result;
	}
}



Tabellenstruktur:

Code:
p_id
mediumint(8) 
Nein

p_name
text
Nein

p_title
text
Nein

p_desc
text
Nein


p_cat
mediumint(8) 
Nein
0

p_time
varchar(18)
Nein

p_edit_time
varchar(18)
Nein

p_views
mediumint(8)
Nein

p_buy
mediumint(8)
Nein


p_cover
text
Nein

p_type
int(2)
Nein

p_status
int(1)
Nein


DB_WERT ist die Datenbank
 
Mit welchem Programm hast du denn die Tabellenstruktur exportiert?
Was bedeutet dieses "Nein", dass kein Defaultwert angegeben ist?

Naja, ändere mal das Query so ab:
PHP:
$top_prod = dbquery("SELECT * FROM ".DB_WERT."produkt WHERE p_status=1 GROUP BY p_name ORDER BY p_buy DESC LIMIT 20");
Du hattest den Integer p_status mit einer Zeichenkette verglichen.
 
Also "Nein" bedeutet "NULL".


Hab die Query abgeändert aber leider wird das noch nicht so ausgegeben wie erwünscht.
 
Wieso hast du überhaupt ein GROUP BY rein in das Query?
Entferne es mal:
PHP:
$top_prod = dbquery("SELECT * FROM ".DB_WERT."produkt WHERE p_status=1 p_name ORDER BY p_buy DESC LIMIT 20");
 
Das habe ich auch schon probiert, funktioniert allerdings auch nicht.

Ich weis einfach nicht woran das liegen könnte :-(
 
Zurück