Ankündigung

Einklappen
Keine Ankündigung bisher.

2 Select Abfragen zusammenlegen

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

  • 2 Select Abfragen zusammenlegen

    Hallo zusammen,
    gibt es eine Möglichkeit diese Select Abfrage zu einer zusammen zu legen.

    Code:
    select
       DATE_FORMAT (a.track_date, "%M") AS Monat,
       cl.name AS Kunde,
       SUM(a.count) as "Anzeigen"
       FROM nixq_banner_tracks a
        LEFT JOIN nixq_banners b ON (b.id = a.banner_id)
        LEFT JOIN nixq_banner_clients cl ON (cl.id = b.cid)
        LEFT JOIN nixq_categories c ON (c.id = b.catid)
        WHERE
        a.track_date >= '2018-01-01 00:00:00'
        AND a.track_date <= '2018-01-31 23:59:59'
        AND cl.id = '17'
        AND b.catid = '20'
        AND a.banner_id = '58'
        AND a.track_type = '1'
    Union
    select
       DATE_FORMAT (a.track_date, "%M") AS Monat,
       cl.name AS Kunde,
       SUM(a.count) as "klicks"
       FROM nixq_banner_tracks a
        LEFT JOIN nixq_banners b ON (b.id = a.banner_id)
        LEFT JOIN nixq_banner_clients cl ON (cl.id = b.cid)
        LEFT JOIN nixq_categories c ON (c.id = b.catid)
        WHERE
        a.track_date >= '2018-01-01 00:00:00'
        AND a.track_date <= '2018-01-31 23:59:59'
        AND cl.id = '17'
        AND b.catid = '20'
        AND a.banner_id = '58'
            AND a.track_type = '2'


  • #2
    was ist der Unterschied? Scheinbar nur track_type mal 1 und mal 2, oder? where ... and track_type in ('1','2') sollte es in dem Fall tun.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Danke für deine schnelle Antwort. Nur ist jetzt das Problem das er track_type 1 und 2 zusammen rechnet. Ich brauche die Werte nebeneinander am besten und einzeln brerechnet.

      Kommentar


      • #4
        Da sich die beiden verbundenen Abfragen lediglich im a.track_type unterscheiden ist das möglich. Verwende ein OR dafür.
        Damit du noch die gleich Sortierung erhältst, musst du noch ein ORDER BY a.track_type dranhängen.

        Kommentar


        • #5
          Nur ist jetzt das Problem das er track_type 1 und 2 zusammen rechnet. Ich brauche die Werte nebeneinander am besten und einzeln brerechnet.
          Also wie am Anfang mit UNION, dann lass es so.

          Kommentar


          • #6
            Nein Sorry das war es auch nicht jetzt berechnet er mir das komplett Falsch.

            Nur zur Info.

            Der Komplette Code unterscheidet sich im

            a.track_type

            und
            SUM(a.count) as "Anzeigen" und
            SUM(a.count) as "Klicks" Und das ganze soltte im Optimalfalle so aussehen.
            Monat Kunde Anzeige Klicks
            Januar xyz xxx xxx

            Kommentar


            • #7
              Danke für deine Antwort.

              Nur habe ich das Problem das ich das 12 mal brauche für jeden Monate. So würde ich 24 Abfragen machen und das kann unterumständen bei einer Änderung der Abfrage sehr unübersichtlich werden.

              Kommentar


              • #8
                Deine in #1 gezeigt Abfrage ist sowieso für die Tonne, da syntaktisch falsch. Du aggregierst mit sum() ohne alle anderen Spalten entweder zu aggregieren oder zu gruppieren. Das fliegt Dir mit einem Fehler in aktuellen MySQL-Versionen sowie in allen anderen Datenbanken um die Ohren. Bis dahin bekommst schlicht falsche Ergebnisse.

                Was Du evtl. suchst ist CASE WHEN und eine Tabelle mit den Monaten, die Du mit joinst.
                PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                Kommentar


                • #9
                  Danke für eure Hilfe.

                  Kommentar


                  • #10
                    Ist dies hier 'MySQL: Gruppieren und Gruppenelemente mit in der Zeile ausgeben' was du suchst?
                    PHP-Klassen auf github

                    Kommentar


                    • #11
                      Zitat von NTM Beitrag anzeigen
                      Danke für deine Antwort.

                      ich das 12 mal brauche für jeden Monate.
                      12 Monate untereinander oder nebeneinander?

                      Kommentar


                      • #12
                        Zitat von NTM Beitrag anzeigen
                        Danke für deine schnelle Antwort. Nur ist jetzt das Problem das er track_type 1 und 2 zusammen rechnet. Ich brauche die Werte nebeneinander am besten und einzeln brerechnet.
                        "einzeln brerechnet" -> mit GROUP BY kannst du festlegen was berechnet werden soll. Willst du die Werte pro track_type, dann musst du nach track_type gruppieren. Willst du die Werte pro track_type und monat musst du nach track_type und monat gruppieren usw.
                        "nebeneinander" -> das ist eine PIVOT Abfrage, dazu muss aber erst das Gruppieren sitzen

                        Kommentar

                        Lädt...
                        X