Eine SQL Abfrage erstellen
Der Tim
- datenbank
Hi,
ich möchte eine Abfrage erststellen, komme aber nicht auf die Lösung. In der Tabelle habe ich folgende Informationen:
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
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
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
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
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
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
hatte ich leider schon ausprobiert.
Error near "="
yo,
nur gezählt werden soll, wenn Erledigt true ist?
ja, mit der Funktion IF(erledight="true",1,NULL)
Ilja
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
yo,
SELECT bearbeiter, COUNT(erledigt), SUM(erledigt) FROM tabelle
mal von dem SUM abgesehen fehlt da wohl noch ein GROUP BY bearbeiter....
Ilja
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
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
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
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