Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP + MySQL

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] PHP + MySQL

    Öhm, zu meinem Problem,

    möchte aus einer Datenbank eine Gruppe von Sätzen auslesen und den mit dem höchsten Wert anzeigen lassen.

    Das gruppieren funktioniert wunderbar, nur das mit dem höchsten Wert nicht...

    Ich könnte einfach "LIMIT 0,1" hinzufügen, aber das erzielt nicht den Effekt...
    Da ich verschiedene UserID´s in der Spalte zu stehen habe.

    Tabellenstruktur:

    bieter
    id | userid | artid | gebot | datum

    bieten
    id | artikelname | artikelbild | description | mingebot | stueckzahl | active | laufzeit | date

    Ja, sollte eine Bieten Funktion sein...
    Was auch funktioniert...

    Der PHP Code...
    PHP-Code:
    $sql1='SELECT *,SUM(gebot) AS preis FROM bieter GROUP BY artid,userid ORDER BY artid ASC';
    $result1=mysql_query($sql1)or die(mysql_error());
    while(
    $row1=mysql_fetch_assoc($result1)){

    $sql5='SELECT * FROM bieten WHERE active = "yes" AND laufzeit <= '.time().'';

            
    $res=mysql_query($sql5)or die(mysql_error());
            
    $roo=mysql_fetch_assoc($res);
            
    $tmp.='Userid: '.$row1['userid'].'<br>Preis: '.$row1['preis'].'<br/>Artid: '.$row1['artid'].'<br/><br/>';
        

    Das ganze wird gruppiert und entsprechend der Sortierung angezeigt.
    ich habe jetz in der db folgendes stehen:
    BIETER:
    AI | 1 | 1 | 0.49 | TIME()
    -------------------------
    AI | 1 | 1 | 10.99 | TIME()
    -------------------------
    AI | 2 | 1 | 10.00 | TIME()
    -------------------------
    AI | 3 | 2 | 0.10 | TIME()
    ...........................

    Die Tabelle Bieten dürfte an der Struktur erkennbar sein ^^
    Mit dem Code bekomme ich folgened:
    Userid: 1
    Preis: 11.48
    Artid: 1

    Userid: 2
    Preis: 10.00
    Artid: 1

    Userid: 3
    Preis: 0.10
    Artid: 2

    Wie kann ich jetzt mit php sagen:
    11.48 > 10.00
    ?

  • #2
    Ich denke, du suchst folgende Funktion:

    SQL: MAX Function

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Danke für die schnelle Antwort, leider bringt das nur eine Fehlermeldung mit der Verbindung MAX(SUM(gebot)) AS preis
      "Invalid use of group function"

      Hab auch gelesen, dass man MAX mit SUM nicht verwenden kann...

      In der While Schleife bringt es mir wenig, weil ich da en "preis" nicht einfach als gebot nehmen kann... (order doch?)

      Kommentar


      • #4
        Ne, Max und Sum kannst Du so nicht zusammen verwenden. Ich gebe Dir nochmal einen Tipp. Hier findest Du ein paar Beispiele, wie man solche Befehle zusammen verwenden kann:

        GROUP BY und Aggregatfunktionen zum Auswerten von Daten

        müsste Dir helfen die Lösung zu finden.

        Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          leider nicht wirklich...
          Wen ein User mehrmals geboten hat, dann zeigt er zwar den höchsten wert, aber nicht die höchste Summe...

          zb.: User1 - 2x geboten, einmal 5.00 und einmal 10.00
          user2 - 3x geboten, einmal 4, einmal 7 und einmal 20

          So liest er den höchsten betrag "20" aus, geht aber nicht von der Gesamtsummer 32 und 15 aus.

          Meine SQL Abfrage:
          PHP-Code:
          $sql1='SELECT *,SUM(gebot) AS preis FROM bieter WHERE gebot = (SELECT MAX(gebot) FROM bieter) GROUP BY artid,userid ORDER BY artid ASC'
          Also irgendetwas schein ich zu übersehen oder bin nicht in der Lage so zu denken^^

          Kommentar


          • #6
            Naja, ist ja irgendwie logisch. Die Summe der Gebote,
            PHP-Code:
            WHERE gebot = (SELECT MAX(gebot)) 
            = MAX(gebot).

            Entweder du legst ein zusätzliches kumulatives Gebotsfeld an oder du probierst mal folgendes MySQL :: Re: selecting MAX(SUM()) . Ja, das gute, alte Google...

            Kommentar


            • #7
              Also mit Google hab ich mich zu tode gegooglet^^

              Immerhin wird mir nun der höchstbietende an erster Stelle angezeigt, leider aber auch damit noch der der am zweithöchsten geboten hat etc.
              Wenn ich nen Limit setze (0,1) dann wird _alles_ auf einen eintrag beschränkt...
              Wobei, die 2.te Auktion ja noch nicht geprüft ist

              Aber das bekomm ich noch hin^^

              danke für deine Antwort

              Kommentar

              Lädt...
              X