Seite 1 von 1

Höchsten und niedrigsten Wert ermitteln

Verfasst: 19.02.2006 04:13
von Fähnchen
Guten morgen,

ich programmiere gerade ein Portal für Internetdienstleistungs-Vermittlung.

Nun stehe ich aber vor einem kleinen Problem für das ich noch keine Lösung gefunden habe.

Auf der Seite können Benutzer Aufträge ausschreiben und Dienstleister ihr Angebot abgeben. Nun möchte ich aus einer Spalte der MySQL-Tabelle das preislich höchste Angebot und das niedrigste Angebot ermitteln.

Leider funktioniert es nicht so ganz. Ich versuche es auf die folgende Weise:

Code: Alles auswählen

$sql = mysql_query("SELECT MAX(kosten) FROM angebote WHERE post_id = '$ausschreibungs_id'");
$max = mysql_fetch_object($sql);
$maximal = $max->kosten;
Der Wert wird dann einem Platzhalter zugeordnet und im Template ausgegeben.

Nur leider erscheint dort wo der Wert stehen soll gar nichts.

Ich habe schon hin und her probiert und nicht funktionierte.
Entweder wurde nur der Preis der zuletzt abgegeben Angebotes ausgegeben oder gar nichts.

Nun habe ich schon die tollsten Sachen hinbekommen und scheitere an so einer Kleinigkeit. :oops: Ich wäre dankbar wenn ein erfahrenen Programmierer mir dabei auf die Sprünge helfen kann.

EDIT

Nun habe ich doch eine Lösung gefunden:

Code: Alles auswählen

$sql = mysql_query("SELECT * FROM angebote WHERE post_id = '$ausschreibungs_id' ORDER BY kosten ASC LIMIT 1");
$min = mysql_fetch_object($sql);
$niedrig = $min->kosten;

$sql = mysql_query("SELECT * FROM angebote WHERE post_id = '$ausschreibungs_id' ORDER BY kosten DESC LIMIT 1");
$max = mysql_fetch_object($sql);
$maximal = $max->kosten;
Was mir daran noch nicht so gefällt sind 2 Datenbankabfragen zu diesem Zweck. vielleicht weiss ja noch jemand eine optimalere Lösung.

Hauptsache das Script tut ersteinmal das was ich will. :P

Re: Höchsten und niedrigsten Wert ermitteln

Verfasst: 19.02.2006 11:14
von itst

Code: Alles auswählen

$sql = mysql_query("SELECT MAX(kosten) AS maxkosten, MIN(kosten) AS minkosten FROM angebote WHERE post_id = '$ausschreibungs_id'");
$max = mysql_fetch_object($sql);
$maximal = $max->maxkosten;
$minimal = $max->minkosten;
So sollte es tun. Wenn Du Aggregat-Funktionen benutzt, solltest Du auch AS benutzen, um dem Ergebis einen 'richtigen' Namen zuzuweisen.

Wenns so auch nicht geht, poste mal hier die Struktur der Tabelle.

Edit:
Ich seh grad '$ausschreibungs_id' - wieso denn Anführungszeichen? Ist die ID nicht nur numerisch?

Verfasst: 19.02.2006 11:33
von Fähnchen
:D Hey, das funktioniert einwandfrei! Danke.
itst hat geschrieben:Ich seh grad '$ausschreibungs_id' - wieso denn Anführungszeichen? Ist die ID nicht nur numerisch?
Doch, eigentlich schon.
Das ist das erste grössere Script das ich programmieren will.
Dran merkt man wohl dass ich auch noch einiges zu lernen habe in diesem Zuge.