[Datensatz ordnen nach größten Wert]

murdi

Erfahrenes Mitglied
guten abend zusammen,
für folgendes problem habe ich bisher leider noch keine lösung gefunden...

ich habe 2 tabellen, in der ersten tabelle befinden sich die artikel mit den startpreisen,in der anderen tabelle befinden sich die abgegebenen gebote ( sprich neuen preise ).

nun möchte ich die datensätze ausgeben, geordnet nach dem höchstgebot.
leider besteht folgendes problem, es werden erst die datensätze der einen tabelle nach dem maxpreis ausgeben und dann die andere datensätze, ebenfalls geordnet nach dem maxpreis.

leider ist die ausgabe falsch, da folgende ausgabe erfolgt

Code:
preis gebote
120    5
50     4
10     1
75     0
45     0

die abfrage: $result = mysql_query("SELECT * , MAX( bids.bid ) AS MAX_BID FROM auctions LEFT JOIN bids ON auctions.id = bids.auction WHERE category='$id' AND closed='0' GROUP BY auctions.id ORDER BY MAX_BID , minimum_bid DESC LIMIT $left_limit,$lines");

vielleicht findet jemand von euch den fehler, den eigentlich sollte die ausgabe so aussehen:

Code:
preis gebote
120    5
75     0
50     4
45     0
10     1

ich würde mich freuen, wenn mir jemand helfen könnte.
mfg murdi
 
Eine geschickt plazierte ORDER BY-Klausel könnte helfen. Allerdings mußt Du dazu den Fullselect (*) qualifizieren, also die Spaltennamen explizit angeben.
 
hallo Vaethischist, danke erst einmal für deine hilfe, leider hat es nicht den gewünschte erfolg gebracht. habe nun folgendes versuch:

es muss doch eine möglichkeit geben, damit ich feld minimum_bid aus tabelle auctions und feld bid aus tabelle bids zu "einem" feld zusammenfassen kann und dann danach sortieren lasse...

mein versuch:

$result = mysql_query("SELECT *, ( auctions.minimum_bid AND bids.bid ) AS MAX_BID
FROM auctions LEFT JOIN bids ON auctions.id = bids.auction WHERE category='$id' AND closed='0' GROUP BY auctions.id ORDER BY MAX_BID DESC LIMIT $left_limit,$lines");


funktioniert aber leider auch nich.
oki, bin dankbar über jeden vorshclag.
schön nachmittag noch
murdi
 
Versuch' mal folgendes:
PHP:
<?php
  [...]
  $query = "
	SELECT
	        *
	  FROM
	        `auctions`
	  LEFT JOIN
	        `bids` ON `auctions`.`id` = `bids`.`auction`
	  WHERE
	        `category` = '".$id."'
	    AND `closed` = '0'
	  GROUP BY
	        `auctions`.`id`
	  ORDER BY
	        `auctions`.`id`,
	        `bids`.`bid` ASC
	  LIMIT
	        ".$left_limit.", ".$lines."
	";
  $result = mysql_query($query);
  [...]
?>

Folgendes könnte von Interesse sein:
&nbsp;&rsaquo;&rsaquo;&nbsp;FAQ der Newsgroups de.comp.lang.php.* – 16.14._Warum soll ich nicht SELECT * schreiben?
 
danke Gumbo, leider bringt auch diese abfrage nicht gewünschten erfolg.
ich habe aus diesem grund, ein klein wenig das script abgeändert und lasse nun immer das aktuelle höchstegbot in die tabelle auction eintragen ( aber erst wenn ein gebot abgegeben wurde ).

neu ist also, dass der der startpreis und das höchste gebot in ein und der selben tabelle stehen. was ich nun vor habe dürfte eigentlich kein problem sein, aber es funktioniert trotzdem nicht. ich lass nach dem höchstgebot und dem startpreis ordnen, leider wird auch hier eine trennung durchgeführt.
es werden erst die daten ausgegeben die ein höchstgebot haben ( tritt nur ein wenn ein gebot abgegeben wurde ) und danach die daten die keins haben.
meine abfrage ist die folgende:

Code:
$result = mysql_query ( "SELECT * FROM auctions WHERE category='$id' AND closed='0' ORDER BY current_bid , minimum_bid DESC LIMIT $left_limit,$lines" );

das resultat:
Code:
Preis                Gebote
200,50 EUR	5
160,50 EUR	2
155,00 EUR	3
5,00 EUR           1
150,00 EUR	0
5,00 EUR           0

danke und schön abend noch.
murdi
 
Zurück