Gebotsystem

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

  • Gebotsystem

    Hallo,

    Ich möchte ein Gebotsystem realisieren. Dafür habe ich 2 Tabellen, so wie hier:


    Das untere wäre dann die Endversion wie es sein soll, aber davon bin ich noch weit weg.
    Im Moment versuche ich, einfach die "5 letzten aktiven angebote samt höchstgebot" ausgeben zu lassen.
    Aussehen tut das so:

    SELECT name, beschreibung, ablevel, mingebot, gebot, bietername
    FROM handel_angebote
    JOIN handel_gebote ON ( handel_angebote.itemid = handel_gebote.itemid )
    WHERE gebot = MAX( gebot ) , gruppe = 'waffen', aktiv = 'ja'
    ORDER BY itemid DESC
    LIMIT 5


    MySQL meldet:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' gruppe = 'waffen', aktiv = 'ja'
    ORDER BY itemid DESC
    LIMIT 5' at line 4

    Das wäre die erwartete Ausgabe:
    name | beschreibung | ablevel | mingebot | gebot | bietername
    test | test | 11 | 1 | 300 | test
    test3 | test3 | 4 | 500 | 800 | moep


    Kann mir da vielleicht jemand weiterhelfen?
    Es sollten ja die beiden angebote aus der gruppe "waffen" mit ihren höchstgeboten ausgegeben werden, stattdessen gibts nur den fehler

    Danke schonmal und Grüße,
    kanuddel

  • #2
    ersetz die Kommatas zwischen den where Bedingungen mal durch "AND"

    Kommentar


    • #3
      #1111 - Invalid use of group function

      hat was mit dem MAX zu tun oder? hab ein bissl rumprobiert, krieg die fehlermeldung aber nicht weg

      edit:
      hab noch weiter rumprobiert.

      SELECT handel_angebote.itemid, itemname, gruppe, beschreibung, ablevel, mingebot, MAX( gebot ) , bietername
      FROM handel_angebote
      JOIN handel_gebote ON ( handel_angebote.itemid = handel_gebote.itemid )
      WHERE gruppe = 'waffen'
      AND aktiv = 'ja'
      ORDER BY handel_angebote.itemid DESC
      LIMIT 5

      gibt folgendes aus:

      itemid itemname gruppe beschreibung ablevel mingebot MAX(gebot) bietername
      2 test waffen test 11 1 800 bli

      zum einen nur eine zele statt 2. der bietername ist vom "ersten bieter" und das gebot ist das höchste der spalte und nich von itemid "2" ondern von itemid "5".
      Zuletzt geändert von kanuddel; 29.05.2011, 13:59.

      Kommentar


      • #4
        MySQL :: MySQL 5.1 Reference Manual :: 12.2.8 SELECT Syntax:
        In the WHERE expression, you can use any of the functions and operators that MySQL supports, except for aggregate (summary) functions.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          hab meinen oberen beitrag nochmal editiert und dann erst die antwort entdeckt.

          Kommentar


          • #6
            hallo,

            zuerst wäre es besser wenn du das Feld timestamp den Wert aus der RFunktion time() nimmst

            versuch mal diese Abfrage:

            SELECT ha.itemid, ha.itemname, ha.gruppe, ha.beschreibung, ha.ablevel, ha.mingebot, MAX( hg.gebot ) , hg.bietername
            FROM handel_angebote ha
            LEFT JOIN handel_gebote hg ON handel_gebote.itemid = handel_angebote.itemid
            WHERE ha.gruppe = 'waffen'
            AND ha.aktiv = 'ja'
            ORDER BY ha.itemid DESC
            LIMIT 5

            ich glaube der eigentliche Fehler war du hattest nur JOIN statt LEFT JOIN stehen und die Klammer kann weg

            Kommentar


            • #7
              itemid itemname gruppe beschreibung ablevel mingebot MAX( hg.gebot ) bietername
              2 test waffen test 11 1 800 bli

              also die gleiche falsche ausgabe wie vorhin

              Kommentar

              Lädt...
              X