count des gleichen wertes in zwei spalten

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

  • count des gleichen wertes in zwei spalten

    Hallo,

    nach mehrtägigen Probieren und Internetsuche ist es nir nicht gelungen eine Lösung für folgendes problem zu finden. ich hoffe hier kann mir geholfen werden :-)

    Ich habe eine Tabelle in der Spielergebnisse (Für eine ballsportliga) stehen:

    spielid | t1_id | t2_id
    ---------------------------
    60 | 2 | 3
    61 | 1 | 4
    62 | 3 | 1
    ...

    t1_id und t2_id sind beides teamids, wobei t1_id die heimmannschaft und t2_id die Ausärtsmannschaft ist.

    Ich suche nun eine Abfrage, mit der ich die Anzahl der Heim Spiele und Auswärtsspiele für jede mannschaft ausgeben kann:

    teamid | Heimspiele | Auswärtsspiele
    2 | 1 | 3
    3 | 0 | 2
    ...

    Nur die heimspiele oder nur die Auswärtsspiele ausgeben ist kein Problem, aber beides zusammen bekomm ich nicht hin.

    Hat da jemand eine Idee oder geht das gar nicht (was ich nicht glauben kann)

    Danke für jede Idee!

  • #2
    wie sieht denn dein Versuch bisher aus?

    Kommentar


    • #3
      Also einfach nur die Heimspiele ausgeben geht so:

      SELECT teamid, count( t1_id ) AS Heimspiele
      FROM liga_anmeldung
      LEFT JOIN liga_spielplan ON ( teamid = t1_id )
      GROUP BY teamid

      wobei hier die Tabelle liga_anmeldung nur deswegen enthalten ist, damit ich angaben zu allen Teams aus der liga habe

      Die Auswärtsspiele sind dann entsprechend so:

      SELECT teamid, count( t2_id ) AS Auswärtsspiele
      FROM liga_anmeldung
      LEFT JOIN liga_spielplan ON ( teamid = t2_id )
      GROUP BY teamid

      Diverse Versuche beides miteinander zu verbinden schlugen fehl.

      ich hab auch schon versucht die Tabelle liga_spielplan mit sich selbst mit einem Left Join zu verbinden, auhc das ging nicht.
      Zuletzt geändert von dduffy1; 04.02.2005, 11:20.

      Kommentar


      • #4
        ähm ... was hat den das Spielergebnis mit team_id zu tun? du zählst offensichtlich die team_id zusammen. Sind das doch nicht ID im Sinne von Identifikation, sondern das Torergebnis? oder willst du zählen, wieviele Heim und Auswärstspiele die einzelnen Mannschaften schon absolviert haben?

        btw: Welche MySQL-Version hast du?

        Kommentar


        • #5
          MYSQL ist 4.0.20

          t1_id und t2_id sind keine Ergebnisse (dafür gibt es noch eine extra tabelle) sondern nur die Spielpaarungen. Also alle teams die in dieser Liga spielen können sowohl in t1_id als auch in t2_id auftauchen (jeh nach Heim oder Auswärtsspiel). ergebnisse spielen bei dieser Abfrage noch keine Rolle, es geht nur um Heim bzw. Auswärtsspiel.

          Kommentar


          • #6
            nimm UNION und verbinde damit deine 2 Abfragen

            Kommentar


            • #7
              hatte ich auch schon mal mit rumprobiert. Der gibt mir doch nur eine Spalte aus, oder mach ich was falsch:

              SELECT teamid, count( t1_id ) AS Heimspiele
              FROM liga_anmeldung
              LEFT JOIN liga_spielplan ON ( teamid = t1_id )
              GROUP BY teamid
              UNION
              SELECT teamid, count( t2_id ) AS Auswärtsspiele
              FROM liga_anmeldung
              LEFT JOIN liga_spielplan ON ( teamid = t2_id )
              GROUP BY teamid

              Ergebnis:



              teamid | Heimspiele
              1 1
              2 2
              3 0
              4 0
              5 0
              6 0
              8 0
              13 1
              14 0
              2 1
              4 1
              13 0
              14 1

              Kommentar


              • #8
                ups, habe während des Telefonieren gepostet und nicht drauf geachtet, sorry ... habe jetzt wenig Zeit, werde mir nächste Woche mal anschauen.

                Kommentar


                • #9
                  Danke schon mal!

                  Kommentar


                  • #10
                    PHP-Code:
                    select teams,
                    (
                    select count(idfrom test where id1 teams) as heim,
                    (
                    select count(idfrom test where id2 teams) as auswaerts
                    from 
                    (select distinct id1 as teams from test
                    union
                    select distinct id2 
                    as teams from test) as subtbl 
                    damit hats bei mir geklappt ... kann gut sein das ich mit der Kirche ums Dorf fahre ... oder das es dafür joints gibt die das schneller können !

                    MySQL-Version muß SubSelects unterstützen !
                    Rock on, Chummers
                    DrNorton

                    Kommentar


                    • #11
                      Hey, Danke!

                      ich habe heute noch mal weiter probiert und es tatsächlich hin bekommen. Das Problem waren die LEFT Joints ... ja ja, wenn man es endlich mal verstanden haat :-)

                      Danke!

                      Kommentar


                      • #12
                        sei bitte so nett und poste deine Lösung für andere User, die vielleicht das gleiche Problem haben. Danke.

                        Kommentar

                        Lädt...
                        X