[SQL allgemein] Joins - Anzeigen von 0-Feldern

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

  • [SQL allgemein] Joins - Anzeigen von 0-Feldern

    Hallo,
    ich habe folg. Tabellen:

    "meldung":
    meldung_id | prioritaet | ...

    "user_b_meldung":
    meldung_id | datum_akt | aktion | ...

    Ich möchte die Anzahl der Meldungen an einem bestimmten Datum - geordnet nach der Prioritaet - haben, was mit dieser Abfrage auch funktioniert:

    PHP-Code:
    SELECT count(user_b_meldung.meldung_id ), 
    meldung.prioritaet
    FROM meldung inner join user_b_meldung on meldung
    .meldung_id user_b_meldung.meldung_id
    WHERE  user_b_meldung
    .aktion LIKE '%auf "läuft"%' and user_b_meldung.datum_akt LIKE '2004-09-29%'
    GROUP BY meldung.prioritaet 
    ABER: Es gibt genau 4 Prioritäten (niedrig, mittel, hoch, fatal) und wenn z.B. keine Meldung die Priorität "mittel" hat, dann wird sie aus der Ergebnismenge weggelassen, was ich aber nicht möchte. Stattdessen sollte dort eine 0 auftauchen.

    Ergo: aus ->

    count(user_b_meldung) | prioritaet
    2 | niedrig
    4 | hoch
    2 | fatal

    soll ->

    count(user_b_meldung) | prioritaet
    2 | niedrig
    0 | mittel
    4 | hoch
    2 | fatal
    werden. Hat irgendwer eine Idee?

  • #2
    LEFT JOIN und IF sind deine Freunde

    Kommentar


    • #3
      http://www.php-resource.de/forum/sho...threadid=28292 lesen und danach einen anderen JOIN nehmen, INNER JOIN ist da blöd
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Jo, dass ich stattdessen lieber einen left-join hätte nehmen sollten, war mir auch noch eingefallen, aber wie bringe ich das mit der priorität zusammen?

        Kommentar


        • #5
          was kommt raus, wenn du LEFT JOIN nimmst?

          was kommt raus, wenn du LEFT JOIN nimmst und die WHERE klausel weg lässt?

          was kommt raus, wenn du aus WHERE AND machst?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            1. das selbe

            2. viele Meldungen, da im System an sich alle Prioritäten garantiert mal vorkommen, aber auf einen bestimmten Tag bezogen nicht zwangsläufig

            3. genau das, was ich wollte

            thx

            Kommentar


            • #7
              Eine Sache noch: Es ist durchaus wahrscheinlich, dass eine Meldung mehrmals gezählt wird (da der Status mehrmals hin und her gewechselt werden kann). Wie kann ich dafür sorgen, dass eine meldungs_id auch nur einmal gezählt wird?

              Kommentar


              • #8
                http://dev.mysql.com/doc/mysql/en/GR...Functions.html
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  count(distinct ....) scheint zu gehen, meintest du das?

                  Kommentar


                  • #10
                    Original geschrieben von miguel_rkc
                    count(distinct ....) scheint zu gehen, meintest du das?
                    nein, ich meinte
                    Code:
                    INCREMENT_COUNTER_FOR_DIFFERENT_VALUES_ONLY_BECAUSE_THIS_HIDDEN_FUNCTION_ROCKS
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      stimmt, distinct macht müll

                      aber wo bitte siehst du mit

                      "INCREMENT_COUNTER_FOR_DIFFERENT_VALUES_ONLY_BECAUSE_THIS_HIDDEN_FUNCTION_ROCKS"



                      Kommentar


                      • #12
                        Original geschrieben von miguel_rkc
                        distinct macht müll
                        soviel müll, dass du ihn uns nicht zumuten willst?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          damn, klappt doch, hab nur vergessen das abfragefenster zu aktualisieren

                          Kommentar

                          Lädt...
                          X