[gelöst] mehrere count´s aus 2 tabellen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [gelöst] mehrere count´s aus 2 tabellen

    Hallo,

    ich habe da ein Problem und suche schon ne ganze weile nach einer Lösung.

    Ich habe 3 Tabellen:

    In tblA werden alle aufnahmen von Benutzern in die DB mit Datum gespeichert, es wird eine id_fall angelegt.

    In tblB werden spez. Daten gespeichert, welche in Beziehung mit id_fall stehen.

    In tblC stehen die Stammdaten der Benutzer auch das Geschlecht.


    Jetzt möchte ich eine Statistik erzeugen, welche mir alle Aufnahmen im Monat in bezug zur tblB
    anzeigt.

    Bisher habe ich das so gelöst:


    SELECT
    date_format(`tblA.`dat_aufnahme`,'%M.%y') AS `monat`,
    Count(`tblB.`id_fall`) AS `anzahl`
    FROM
    `tblB`
    Left Join `tblA` ON `tblB.`id_fall` = `tblAt`.`id_fall`
    GROUP BY
    `monat`
    ORDER BY
    `tblA`.`dat_aufnahme` ASC



    Das Ergebnis:

    monat ---- anzahl

    March.09 ---- 38
    April.09 ---- 59
    May.09 ---- 94
    June.09 ---- 82
    July.09 ---- 98
    August.09 ---- 35


    Jetzt möchte ich aber noch die Anzahl der einzelnen Geschlechter anzeigen lassen.

    Es sollte so aussehen:

    monat ---- anzahl ---- M ---- W

    March.09 ---- 38 ---- 20 ---- 18
    April.09 ---- 59 ---- 50 ---- 9
    May.09 ---- 94 ---- 40 ---- 54 ….

    Irgendwie stehe ich auf dem Schlauch.
    Ich hoffe das ihr mir auf die Sprünge helfen könnt.

  • #2
    Hallo,

    wie wird denn das Geschlecht gespeichert, als ENUM? Jedenfalls musst du dir erstmal zwei Ausdrücke ausdenken, die einmal für alle männlichen und einmal für alle weiblichen Kandidaten NULL ergeben. Dafür kann man bequem mit nullif arbeiten.

    Beispiel:
    Code:
    nullif(`geschlecht`, 'm')
    nullif(`geschlecht`, 'w')
    Da count nur Werte zählt, die nicht NULL sind, kannst du in der Spaltendefinition diese Ausdrücke in der Form [FONT="Courier New"]count(nullif(...))[/FONT] als zusätzliche Spalten hinzufügen.

    Gruß,

    Amica
    Last edited by AmicaNoctis; 18-09-2009, 23:18.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Comment


    • #3
      Perfekt,

      danke für den Tipp, habe es so gelöst


      SELECT
      date_format(`tblA.`dat_aufnahme`,'%M.%y') AS `monat`,
      Count(`tblB.`id_fall`) AS `anzahl`,
      Count(NULLIF(`tblC`.`geschl`,'m')) AS m,
      Count(NULLIF(`tblC`.`geschl`,'w')) AS w
      FROM
      `tblB`
      Left Join `tblA` ON `tblB`.`id_fall` = `tblA`.`id_fall`
      Inner Join `tblC` ON `tblC`.`id_pat` = `tblB`.`id_fall`
      GROUP BY
      `monat`
      ORDER BY
      `tblA`.`dat_aufnahme` ASC


      Gruß Alex

      Comment


      • #4
        Du musst m und w noch vertauschen, weil nullif(..., 'm') für alle Männchen NULL liefert und count dadurch nur die Weibchen zählt:
        Code:
        ...
        Count(NULLIF(`tblC`.`geschl`,'m')) AS w,
        Count(NULLIF(`tblC`.`geschl`,'w')) AS m
        ...
        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Comment

        Working...
        X