Ankündigung

Einklappen
Keine Ankündigung bisher.

ORDER BY vor GROUP BY

Einklappen

Neue Werbung 2019

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

  • ORDER BY vor GROUP BY

    Hallo Jungs,

    wie kann ich ORDER BY `percent` noch vor der gruppierung geschehen lassen?

    Code:
    SELECT images.`id`, 
           ROUND(voting.`clicks` * 100 / voting.`shows`) AS `percent`
    FROM images
    LEFT JOIN voting ON images.`id` = voting.`id_images`
    LEFT JOIN images_categories ON images.`id_images_categories` = images_categories.`id`
    GROUP BY images_categories.`id`
    Danke für eure Hilfe..


  • #2
    Z. B. in dem du erst eine Abfrage mit ORDER BY schreibst und dann eine äußere mit GROUP BY:
    Code:
    SELECT * FROM (SELECT * FROM ... ORDER BY ...) AS ... GROUP BY ...

    Kommentar


    • #3
      Zitat von santana2000 Beitrag anzeigen
      Hallo Jungs,

      wie kann ich ORDER BY `percent` noch vor der gruppierung geschehen lassen?

      Code:
      SELECT images.`id`, 
             ROUND(voting.`clicks` * 100 / voting.`shows`) AS `percent`
      FROM images
      LEFT JOIN voting ON images.`id` = voting.`id_images`
      LEFT JOIN images_categories ON images.`id_images_categories` = images_categories.`id`
      GROUP BY images_categories.`id`
      Danke für eure Hilfe..
      Warum überhaupt das GROUP BY? Das ist Bullshit und wird in allen Datenbanken außer MySQL sogar korrekt als syntaktisch falsch erkannt.
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        Zitat von akretschmer Beitrag anzeigen
        Warum überhaupt das GROUP BY? Das ist Bullshit und wird in allen Datenbanken außer MySQL sogar korrekt als syntaktisch falsch erkannt.
        Du darfst gerne zeigen wie das mit SQL gehen würde.

        Meinst du evtl., ich könnte das auch mit DISTINCT machen?

        Kommentar


        • #5
          Zitat von santana2000 Beitrag anzeigen
          Du darfst gerne zeigen wie das mit SQL gehen würde.

          Meinst du evtl., ich könnte das auch mit DISTINCT machen?
          Code:
          test=# select p_id, c_id from a group by p_id;
          ERROR:  column "a.c_id" must appear in the GROUP BY clause or be used in an aggregate function at character 14
          STATEMENT:  select p_id, c_id from a group by p_id;
          ERROR:  column "a.c_id" must appear in the GROUP BY clause or be used in an aggregate function
          LINE 1: select p_id, c_id from a group by p_id;
          Falls Du mehrere gleiche id hast: welcher Wert soll dann genommen werden? Falls id dier Primary Key ist: das GROUP BY ist dann sinnfrei.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Zitat von akretschmer Beitrag anzeigen

            Falls Du mehrere gleiche id hast: welcher Wert soll dann genommen werden? Falls id dier Primary Key ist: das GROUP BY ist dann sinnfrei.
            Wieso sinnfrei, wenn ich die Bilder nach Kategorie gruppieren will?
            Das Bild, pro Kategorie, was am meisten gevotet wurde soll angezeigt werden.

            BILDER //hier SELECT
            images.id (primary) (1)
            images.pfad
            images.id_images_categories (FK) (2)

            BILDER KATEGORIEN //hier GROUP BY
            images_categories.id (primary) (2)
            images_categories.img_category

            VOTING //hier ORDER BY
            voting.id (primary)
            voting.id_images (FK) (1)
            voting.shows
            voting.clicks

            Kommentar


            • #7
              Zitat von santana2000 Beitrag anzeigen
              Wieso sinnfrei, wenn ich die Bilder nach Kategorie gruppieren will?
              Das Bild, pro Kategorie, was am meisten gevotet wurde soll angezeigt werden.
              Dann aggregiere. Dazu gibt es Aggregatsfunktionen wie max(). Und eine Doku, die alles erklärt.
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar

              Lädt...
              X