Anzahl gleicher namen ermitteln

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

  • Anzahl gleicher namen ermitteln

    hi...

    ich würde gern in die folgende abfrage noch mit einbauen, das mir nur die datensätze angezeigt werden, wo der name mehr als 3 mal vorhanden ist

    kann mir da jemand weiterhelfen?

    Code:
    SELECT l.datum, lf.nachname, lf.vorname, lb.name, e.rp
    FROM tbl_ergebnisse e, tbl_lauf l, tbl_laeufer lf, tbl_laufbezeichnung lb
    WHERE e.lauf_id = l.lauf_id 
    AND e.laeufer_id = lf.laeufer_id
    AND lb.name_id = l.name_id
    AND SUBSTRING( l.datum, 1, 4 ) = '".$jahr."' 
    AND e.rp <> 0 
    AND e.strecke = '".$strecke."'
    ORDER BY lf.nachname, lf.vorname, e.rp DESC

  • #2
    Re: Anzahl gleicher namen ermitteln

    COUNT() und HAVING ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      @wahsaga

      habs jetzt so:

      Code:
      SELECT l.datum, lf.nachname, lf.vorname, lb.name, e.rp
      FROM tbl_ergebnisse e, tbl_lauf l, tbl_laeufer lf, tbl_laufbezeichnung lb
      WHERE e.lauf_id = l.lauf_id 
      AND e.laeufer_id = lf.laeufer_id 
      AND lb.name_id = l.name_id 
      AND SUBSTRING( l.datum, 1, 4  )  =  '".$jahr."' 
      AND e.rp <>0 
      AND e.strecke =  '".$strecke."'
      ORDER  BY lf.nachname, lf.vorname, e.rp DESC 
      HAVING count( lf.laeufer_id )  >  3
      da bekomm ich leider immer nen fehler.

      Kommentar


      • #4
        Original geschrieben von lx-club
        da bekomm ich leider immer nen fehler.
        und wahsaga soll jetzt seine glaskugel fragen, wie die fehlermeldung ist?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Original geschrieben von lx-club
          @wahsaga
          da bekomm ich leider immer nen fehler.
          Hau spaßeshalber noch ein group by rein

          Kommentar


          • #6
            Code:
            SELECT l.datum, lf.nachname, lf.vorname, lb.name, e.rp, COUNT( lf.laeufer_id ) 
            FROM tbl_ergebnisse e, tbl_lauf l, tbl_laeufer lf, tbl_laufbezeichnung lb
            WHERE e.lauf_id = l.lauf_id 
            AND e.laeufer_id = lf.laeufer_id 
            AND lb.name_id = l.name_id 
            AND SUBSTRING( l.datum, 1, 4  )  =  '2001' AND e.rp <>0 
            AND e.strecke =  'kurz'
            ORDER  BY lf.nachname, lf.vorname, e.rp DESC 
            HAVING COUNT( lf.laeufer_id )  >3
            kommt diese fehlermeldung: (im PMA)

            #1064 - You have an error in your SQL syntax. Check the manual that
            corresponds to your MySQL server version for the right syntax to use
            near 'HAVING COUNT( lf.laeufer_id ) >3 LIMIT 0, 30' at line 5

            ichhabe jetzt das having vor das order genommen, aber da bekomm ich immer nur einen datensatz angezeigt

            Kommentar


            • #7
              rtfm
              Having kommt vor order by

              Kommentar


              • #8
                Original geschrieben von em-!x
                Hau spaßeshalber noch ein group by rein
                hmm.... aber gruppieren möcht ich nix

                Kommentar


                • #9
                  Original geschrieben von lx-club
                  hmm.... aber gruppieren möcht ich nix
                  was du möchtest und nicht möchtest ist der datenbank sowas von egal schnucki...
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    ja , aber dann kann ichs wo so nicht lösen denk ich mal

                    Kommentar


                    • #11
                      probier's doch mal mit group
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        ja wie gesagt das lässt sich schlecht machen, da zu jedem namen mehrere wettkämpfe gehören, was jaauch meine abfrage macht, nur wollte ich die noch rausfiltern, die bei weniger als 3 wettkämpfen mitgemacht haben.

                        Kommentar


                        • #13
                          Original geschrieben von lx-club
                          ja wie gesagt das lässt sich schlecht machen, da zu jedem namen mehrere wettkämpfe gehören
                          deswegen zählst du ja

                          nur wollte ich die noch rausfiltern, die bei weniger als 3 wettkämpfen mitgemacht haben.
                          deswegen zählst du ja


                          hast du's denn mal probiert?
                          zeig mal dein SELECT _mit_ GROUP BY und das ergebnis davon
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            Code:
                            SELECT l.datum, lf.nachname, lf.vorname, lb.name, e.rp, count( lf.laeufer_id ) 
                            FROM tbl_ergebnisse e, tbl_lauf l, tbl_laeufer lf, tbl_laufbezeichnung lb
                            WHERE e.lauf_id = l.lauf_id 
                            AND e.laeufer_id = lf.laeufer_id 
                            AND lb.name_id = l.name_id 
                            AND SUBSTRING( l.datum, 1, 4 ) = '2001' 
                            AND e.rp <>0 
                            AND e.strecke = 'kurz'
                            GROUP BY lf.laeufer_id
                            HAVING count( lf.laeufer_id ) >3
                            ORDER BY lf.nachname, lf.vorname, e.rp DESC
                            das ergebnis:
                            datum | nachname | vorname | name | rp | count( lf.laeufer_id )
                            2001-06-17 | Ehrlich | Katrin | Görziger Landschaftslauf |88 | 6
                            2001-04-30 | Samrey | Franz |Stundenlauf | 73 | 6
                            2001-03-31 | Andrich-Gebauer | Corinne | Katzengebirgslauf | 82 | 4
                            2001-03-18 | Ehrlich | Dirk | Lauf durch die Röderaue | 87 | 11

                            aber jetzt ist es ja so, das alles diese läufer auch noch bei anderen läufen mitgemacht haben, die ja jetzt nicht mehr angezeigt werden

                            Kommentar


                            • #15
                              du bist mir ja ein ganz toller

                              du willst also alle daten und zusätzlich deren anzahl?

                              wenn es nicht sein kann, dass ein läufer aneinem tag zwei läufe macht, dann nimm das datum mal raus und versuche dann sowas in der art
                              Code:
                              SELECT lf.nachname, lf.vorname, lb.name, e.rp, count( lf.laeufer_id ) 
                              FROM tbl_ergebnisse e, tbl_lauf l, tbl_laeufer lf, tbl_laufbezeichnung lb
                              WHERE e.lauf_id = l.lauf_id 
                              AND e.laeufer_id = lf.laeufer_id 
                              AND lb.name_id = l.name_id 
                              AND SUBSTRING( l.datum, 1, 4 ) = '2001' 
                              AND e.rp <>0 
                              AND e.strecke = 'kurz'
                              GROUP BY lf.nachname, lf.vorname, lb.name, e.rp
                              HAVING count( lf.laeufer_id ) >3
                              ORDER BY lf.nachname, lf.vorname, e.rp DESC
                              was kommt da raus?

                              wenn das nicht das ist, was du willst, dann nimm e.rp aus dem SELECT und aus dem GROUP BY mal raus und probier nochmal
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X