Der Tim: Eine SQL Abfrage erstellen

Hi,

ich möchte eine Abfrage erststellen, komme aber nicht auf die Lösung. In der Tabelle habe ich folgende Informationen:

  • ID
  • Bearbeiter (string)
  • erledigt (bool)

Meine Aufgabe ist es jetzt eine Abfrage zu erstellen wo der Bearbeiter angezeigt wird und wie viele Aufträge er schon erledigt hat. Bsp:

Bearbeiter Aufträge Erledit
Tim 4 1
Steffen 8 0
.
.
.

Ich hoffe ich konnte erklären was ich meine. Gibt es eine Lösung dafür? Ich vermute es ist gar nicht möglich.

Ich freue mich über jede Antwort

MfG
der tim

  1. Hi, tim

    ich möchte eine Abfrage erststellen, komme aber nicht auf die Lösung. In der Tabelle habe ich folgende Informationen:

    • ID
    • Bearbeiter (string)
    • erledigt (bool)

    Ok ist klar.

    Meine Aufgabe ist es jetzt eine Abfrage zu erstellen wo der Bearbeiter angezeigt wird und wie viele Aufträge er schon erledigt hat. Bsp:

    Bearbeiter Aufträge Erledit
    Tim 4 1
    Steffen 8 0

    wo kommt die Spalte Aufträge aufeinmal her???

    also mit:

    SELECT Bearbeiter FROM #tabellenname WHERE erledigt="1";

    glaub zumindest das 1 true ist. kannst das ganze noch erweitern mit:

    SELECT * FROM #tabellenname WHERE erledigt="1" AND Bearbeiter="Tim";

    dann listet er dir alle erledigten aufträge mit Tim als bearbeiter auf. wenn du das ganze über PHP ansprichst kannst du:

    $sqlbefehl = 'SELECT * FROM #tabellenname WHERE erledigt="1" AND Bearbeiter="Tim"';
    $result = mysql_querry($sqlbefehl);
    $erledigteAuftraege = mysql_num_rows($result);

    dir somit die anzahl der erledigten aufträge ausgeben lassen

    1. Hi,

      Bearbeiter Aufträge Erledit
      Tim 4 1
      Steffen 8 0

      Das soll nur die ausgabe darstellen. Als erstes kommt immer der Name des Mitarbeiters dann die Aufräge und zum Schluss die Anzahl der erledigten aufträge

      Diese Abfrage hatte ich als erstes im Sinn:

      SELECT V.bearbeiter, Count(*) AnzAufträge
      FROM VORGANG V
      Group by bearbeiter

      Aber irgendwie muss da noch die Anzahl der erledigten Aufträge rein. Auch wenn es sich um 0 handelt.

      MfG
      Tim

      1. Diese Abfrage hatte ich als erstes im Sinn:

        SELECT V.bearbeiter, Count(*) AnzAufträge
        FROM VORGANG V
        Group by bearbeiter

        also arbeitest du ohne PHP?? mit PHP wäre es recht einfach mit:

        SELECT bearbeiter FROM VORGANG WHERE berarbeiter="tim";

        »»liefert über mysql_num_rows(); die anzahl der aufträge

        SELECT bearbeiter FROM VORGANG WHERE berarbeiter="tim" AND erledigt="1";

        »»liefert über mysql_num_rows(); die anzahl der erledigten aufträge

        1. Ja ich arbeite leider ohne PHP, da die Abfragen in einem Programm generiert werden.

          Ich bin jetzt auf folgende Lösung gekommen:

          SELECT  V.bearbeiter, Count(*) Anzahl, COUNT(erledigt) Erledigt
          FROM VORGANG V
          Group by v.bearbeiter

          Aber sie ist noch nicht komplett.

          Kann man einstellen, das nur gezählt werden soll, wenn Erledigt true ist?

          MfG
          tim

          1. Ja ich arbeite leider ohne PHP, da die Abfragen in einem Programm generiert werden.

            Ich bin jetzt auf folgende Lösung gekommen:

            SELECT  V.bearbeiter, Count(*) Anzahl, COUNT(erledigt) Erledigt
            FROM VORGANG V
            Group by v.bearbeiter

            sowas oder ähnliches könnt ich mir vorstellen:

            SELECT  V.bearbeiter, Count(*) Anzahl, COUNT(erledigt="1") Erledigt
            FROM VORGANG V
            Group by v.bearbeiter

            1. hatte ich leider schon ausprobiert.
              Error near "="

          2. yo,

            nur gezählt werden soll, wenn Erledigt true ist?

            ja, mit der Funktion IF(erledight="true",1,NULL)

            Ilja

  2. hi,

    Meine Aufgabe ist es jetzt eine Abfrage zu erstellen wo der Bearbeiter angezeigt wird und wie viele Aufträge er schon erledigt hat. Bsp:

    Bearbeiter Aufträge Erledit
    Tim 4 1
    Steffen 8 0

    SELECT bearbeiter, COUNT(erledigt), SUM(erledigt) FROM tabelle

    -> wenn erledigt das BOOL über 0 und 1 abbildet.

    andernfalls müsste in das SUM noch ein IF() mit rein, welches 1 für erledigt=TRUE oder andernfalls 0 liefert.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. yo,

      SELECT bearbeiter, COUNT(erledigt), SUM(erledigt) FROM tabelle

      mal von dem SUM abgesehen fehlt da wohl noch ein GROUP BY bearbeiter....

      Ilja

      1. hi,

        SELECT bearbeiter, COUNT(erledigt), SUM(erledigt) FROM tabelle

        mal von dem SUM abgesehen fehlt da wohl noch ein GROUP BY bearbeiter....

        argh, das hab ich vergessen, dass soll da natürlich noch hin.

        aber warum möchtest du vom SUM absehen ...?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. yo,

          aber warum möchtest du vom SUM absehen ...?

          es ist nicht so, dass SUM nicht zu dem gewünschten ergebnis führt. aber COUNT ist hier meiner meinung nach direkter (sinniger), da es ja um das zählen von datensätzen geht und nicht um aufsummieren. das kann man sicherlich als kleinlich abtun, deswegen aber auch das " mal abgeshen"...

          Ilja

          1. hi,

            es ist nicht so, dass SUM nicht zu dem gewünschten ergebnis führt. aber COUNT ist hier meiner meinung nach direkter (sinniger),

            wie sähe dein vorschlag mit COUNT() aus?
            das zählt doch "die spalte" erledigt auf jedenfall, egal ob 0 oder 1 drin steht.

            da es ja um das zählen von datensätzen geht und nicht um aufsummieren. das kann man sicherlich als kleinlich abtun, deswegen aber auch das " mal abgeshen"...

            da hier nur 0 oder 1 enthalten sein soll (wenn ich das richtig verstanden habe), finde ich SUM hier sogar ganz nett, um die summe der erledigten aufträge zu ermitteln.
            wie eine art "spielstand": jeder erledigte auftrag bring einen "punkt" - und die müssen dann zusammenaddiert werden.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. yo,

              wie sähe dein vorschlag mit COUNT() aus?

              je nachdem, welche werte er dort drinn stehen hat. wenn er nur ein true oder eine 1 hat für erledigt und in den anderen datensätze ein NULL wert, wird dieser durch das COUNT nicht mitgezählt. hat er einen anderen wert, bietes sich die IF() funktion an.

              das zählt doch "die spalte" erledigt auf jedenfall, egal ob 0 oder 1 drin steht.

              ja, aber wie gesagt, nicht bei NULL werten.

              da hier nur 0 oder 1 enthalten sein soll (wenn ich das richtig verstanden habe), finde ich SUM hier sogar ganz nett, um die summe der erledigten aufträge zu ermitteln.

              naja, COUNT macht letztlich genau das gleiche. ob man dies nun summe oder anzahl nennt ist nicht wirklich so wichtig. beide wege sind sicherlich gehbar und somit sollten beide auch zum gleichen ergebiss führen.

              Ilja