[MYSQL] ZU wenig Ergebnisse wegen GROUP BY

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

  • [MYSQL] ZU wenig Ergebnisse wegen GROUP BY

    Hallo zusammen,
    ich habe eine realtiv komplexe MySQL Abfrage, in der es darum geht Produktdaten, mit Daten von Bildern, Auktionsdaten zusammenzuführen.
    Das Problem:
    Ich will den Höchstpreis zu jeder Auktion aus der Datenbank der Bieter mit max() holen. Das erfordert jedoch, dass ich auch die GROUP BY Klausel einsetzte. Wenn aber noch niemand etwas geboten hat, kann ich nicht nach der auction_id gruppieren, da es ja keinen Eintrag damit gibt. Das Ergebnis sieht wie folgt aus: statt Einträge für die 2 existierenden Auktionen zu holen, kommt nur eine an.
    Jetzt zu meiner Frage: Was für Alternativen habe ich um das gewünschte Ergebnis zu erzielen? Oder wie strukturiere ich meine Abfrage um, damit die Ergebnisse trotzdem kommen?

    Ich hoffe ihr versteht mein Problem, weiß nicht genau wie ich's ausdrücken sollte :P

    Hier mein Query:
    Code:
    SELECT
      t1.auction_id as `id`,
      t1.auction_end as `end`,
      t1.auction_start_price as `start_price`,
      t2.product_id as `product_id`,
      t2.product_group as `product_group`,
      t2.product_no as `product_no`,
      t2.product_product as `product_product`,
      t2.product_type as `product_type`,
      t2.product_year as `product_year`,
      t3.product_description as `product_description`,
      [B]max(t4.bidder_price) as `price`,[/B]
      t5.product_pic_filename as `pic_filename`,
      t6.product_pic_comment as `pic_comment`
    FROM
        auctions t1
      LEFT JOIN
        products t2
        USING(product_id)
      LEFT JOIN
        products_de t3
        USING(product_id)
      [B]LEFT JOIN
        auction_bidders t4
        USING(auction_id)[/B]
      LEFT JOIN
        product_pics t5
        ON t2.product_default_pic = t5.product_pic_id
      LEFT JOIN
        product_pics_de t6
        ON t2.product_default_pic = t6.product_pic_id
    WHERE
        t1.auction_abort = '0000-00-00 00:00:00'
      AND
        t1.auction_end > NOW()
    [B]GROUP BY
      t4.auction_id[/B]
    ORDER BY
      t1.auction_end ASC,
      t1.auction_start ASC
    Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

    Denk' mal drüber nach!

  • #2
    Gruppier mal nach t1.auction_id, statt nach t4.auction_id.

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Danke, das war's.
      Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

      Denk' mal drüber nach!

      Kommentar

      Lädt...
      X