max(count())=

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

  • max(count())=

    Folgende Abfrage liefert das gewünschte Ergebnis
    PHP-Code:
    select d.deptno d.dnamecount(e.ename) as anzahl 
    from emp e 
    left join dept d 
    on e
    .deptno d.deptno 
    group by d
    .deptno 
    Das gibt mir die Anzahl Mitarbeiter pro Abteilung aus.
    Wie kann ich jetzt nur die Abteilung mit den meisten mitarbeitern zurückgeliefert bekommen ohne verwendung von limit
    PHP-Code:
    select d.deptno d.dnamemax(count(e.ename)) as anzahl 
    from emp e 
    left join dept d 
    on e
    .deptno d.deptno 
    group by d
    .deptno 
    funzt net (Fehler: Invalid use of group function)
    Ich denke, also bin ich. - Einige sind trotzdem...

  • #2
    Lass einfach mal das group by weg...

    PHP-Code:
    select d.deptno d.dnamemax(count(e.ename)) as anzahl 
    from emp e 
    left join dept d 
    on e
    .deptno d.deptno 
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      danke, aber tut nich.

      gleiche fehlermeldung (Invalid use of group function)
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        mach noch zusaätzlich das 'd.dname' in den group rein ...

        Code:
        ...
        group by d.deptno,d.dname
        oder lasse das feld beim select einfach raus.
        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
          tut auch nich (same error message)
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            was passiert, wenn du das count(...) und group weglässt?

            wie sehen denn die tabellen aus, und wie soll die ausgabe sein?

            vielleicht habe ich nur einen denkfehler.
            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


            • #7
              max ( count () ) geht nicht, das besagt auch die Fehlermeldung
              invalid use of group function benennt nicht das group by sondern das max

              Du könntest order by desc benutzen und dann nur den ersten wert nehmen.
              Was spricht gegen LIMIT ?
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                gegen limit spricht, dass wir an der ba (berufsakademie, sowas wie uni) oracle sql*plus haben und wir "limit" noch nicht kennen (laut dozent), bzw. das gar nich unterstützt wird.

                in oracle geht's eigentlich auch nich so, da geht es über sub-queries, die von mysql aber auch nicht unterstüptzt werden afaik
                PHP-Code:
                //Oracle
                select d.deptnod.dnameCOUNT(*)
                from dept demp e
                where d
                .deptno e.deptno
                group by    d
                .deptnod.dname
                having count
                (*) = (select(max(count(*)) from emp group by deptno); 
                seh ich das richtig, dass das in mysql nur über temporäre tabellen geht?
                Bitte sagt mir, dass ich falsch liege
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  subqueries gehen leider erst ab mysql 4, wenn ich richtig liege.

                  was genau so denn rauskommen?

                  gib mal eine beispielausgabe.
                  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


                  • #10
                    PHP-Code:
                    select d.dnamecount(e.ename"Anzahl Mitarbeiter" from dept demp e where d.deptno=e.deptno group by d.deptno 
                    liefert:
                    dname -------- Anzahl Mitarbeiter
                    ACCOUNTING      2
                    RESEARCH         5
                    SALES  &nbsp           6
                    und ich hätte jetzt gern 1 select, dass mir nur die letzte der drei ergebnisszeilen liefert ohne order und ohne limit
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      teste das mal

                      Code:
                      SELECT      d.dname, count(e.ename) "Anzahl Mitarbeiter"
                      
                      FROM        emp e
                                    LEFT OUTER JOIN dept d USING(deptno)
                                    
                      group by    d.dname
                      aber eines muss ich jetzt schon sagen. OHNE LIMIT kannst du NICHT auskommen, wenn du nur einen ausschnitt haben willst


                      EDIT:
                      habs grad mal auf deiner website getestet... so ist es in der ausgabe wie unter oracle

                      Code:
                      SELECT      d.dname, count(e.ename) "Anzahl Mitarbeiter"
                      
                      FROM        emp e
                                    LEFT OUTER JOIN dept d USING(deptno)
                      
                      WHERE       e.deptno != 0
                                 
                      GROUP BY    d.dname
                      Zuletzt geändert von Abraxax; 20.01.2003, 17:08.
                      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


                      • #12
                        Original geschrieben von Abraxax
                        EDIT:
                        habs grad mal auf deiner website getestet... so ist es in der ausgabe wie unter oracle
                        schön aber das wusste ich auch schon, warum kann ich in mysql denn noch nicht schreiben
                        Code:
                        select max(count(ename)) from emp group by deptno
                        ??????????
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          und wie mach ich das mit temporären tabellen?
                          PHP-Code:
                          $conn=mysql_connect("localhost","streng","geheim");
                          mysql_select_db("auch_geheim");
                          mysql_query("CREATE TEMPORARY TABLE dummy(anzahl INT NOT NULL) SELECT count(ename) as anzahl from emp group by deptno");
                          $result1=mysql_query("select * from dummy",$conn) or die(mysql_error());
                          while (
                          $row=mysql_fetch_array($result1,MYSQL_ASSOC))
                          {
                              echo 
                          "-----------<br />";
                              foreach(
                          $row as $key=>$value)
                                  echo 
                          "$key:  $value<br />";
                              echo 
                          "-----------<br />";
                          }
                          mysql_close($conn); 
                          will nämlich nicht.
                          Fehler: Table 'auch_geheim.dummy' doesn't exist
                          EDIT:
                          Edit-Tags weg-gemacht, sollte eigentlich eine änderung des beitrags obendrüber sein
                          Zuletzt geändert von mrhappiness; 20.01.2003, 19:08.
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            geht das überhaupt mit TEMP tables ?

                            mache mal aus
                            CREATE TEMPORARY TABLE dummy

                            das hier
                            CREATE TABLE dummy

                            dann ist die aber nicht temp. musst du dann löschen, damit sie temp 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


                            • #15
                              klappt jetzt (in meinem [geposteten] ersten versuch war "anzahl" zweimal vergeben)

                              hab jetzt in der tabelle dummy die anzahl der mitarbeiter je abteilung (anzahl) und die abteilungsnummer stehen (deptno)

                              und wie finde ich jetzt davon den größten (inkl. abteilungsname)?
                              Code:
                              select dummy.anzahl, dummy.deptno, dept.dname from dummy, dept having dummy.anzahl=max(dummy.anzahl)
                              will nich
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X