PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Komplexe Abfrage


NC-Sven
25.04.2008, 00:09:13
Hallo zusammen,
ich bin noch Anfänger was die SQL Programmierung angeht, einfach Abfragen sind bisher kein Problem, ich bin aber jetzt bei einer Abfrage an meine Grenzen gestoßen, ich würde mich freuen, wenn mir jemand hierbei helfen kann ...

Ich habe eine Tabelle mit folgenden Daten :

Auftragsnummer | Kundennummer | Techniker | Datum
1 | 1 | 1 | 01.01.2008
2 | 2 | 1 | 01.01.2008
3 | 1 | 1 | 02.01.2008
4 | 3 | 3 | 03.01.2008
5 | 1 | 2 | 04.01.2008
6 | 4 | 1 | 04.01.2008
7 | 3 | 2 | 05.01.2008


Aus dieser Tabelle würde ich gerne eine Art efolgsquote auslesen, also pro Techniker würde ich gerne wissen, bei wieviel Prozent seiner Anfahrten später nochmal ein Techniker zum Kunden musste, egal ob er selbst oder ein anderer. Dies möchte ich nach möglichkeit in einer SQL Abfrage lösen, also ohne PHP. Ich hab schon verschiedenes mit Group etc versucht aber irgendwo mache ich einen Denkfehler .. würde mich freuen, wenn mir jemand helfen kann ...

Franzx
25.04.2008, 16:36:44
Hallo zusammen,
ich bin noch Anfänger was die SQL Programmierung angeht, einfach Abfragen sind bisher kein Problem, ich bin aber jetzt bei einer Abfrage an meine Grenzen gestoßen, ich würde mich freuen, wenn mir jemand hierbei helfen kann ...

Ich habe eine Tabelle mit folgenden Daten :

Auftragsnummer | Kundennummer | Techniker | Datum
1 | 1 | 1 | 01.01.2008
2 | 2 | 1 | 01.01.2008
3 | 1 | 1 | 02.01.2008
4 | 3 | 3 | 03.01.2008
5 | 1 | 2 | 04.01.2008
6 | 4 | 1 | 04.01.2008
7 | 3 | 2 | 05.01.2008


Aus dieser Tabelle würde ich gerne eine Art efolgsquote auslesen, also pro Techniker würde ich gerne wissen, bei wieviel Prozent seiner Anfahrten später nochmal ein Techniker zum Kunden musste, egal ob er selbst oder ein anderer. Dies möchte ich nach möglichkeit in einer SQL Abfrage lösen, also ohne PHP. Ich hab schon verschiedenes mit Group etc versucht aber irgendwo mache ich einen Denkfehler .. würde mich freuen, wenn mir jemand helfen kann ...


Moin NC-Sven und herzlich Willkommen im Forum!

Der Denkfehler steckt wohl darin, dass es keine doppelte Auftragsnummer gibt.
Ich nehem doch an, dass ein Kunde auch mehrfach einen Tachniker rufen könnte, in anderen Angelegenheiten, also neuer Auftrag.
Damit aber festgestellt werden kann das zum gleichen Auftrag mehrere Techniker beschäftigt waren, müßte dies an der Auftragsnummer festgemacht werden, oder?

Grüße,Franzx

NC-Sven
25.04.2008, 16:50:22
Hallo Franz,
vielen Dank für die Antwort, die Tabelle hier ist stark vereinfacht dargestellt.
Die in der realen Tabelle gibt es schon einige Aufträge mehrfach. Diese sind dann in Fomr von 1234-1, 1234-2, 1234-3 etc gespeichert, die Abfrage sollte aner dennoch über die Kundennummer laufen, da eine Störung oft als behoben gemeldet wird ohne es zu sein, in dem Fall wird ein neues Ticket zu gleichen Kundennummer generiert ...

Franzx
25.04.2008, 17:34:31
Ok, wenn nach Kundenummer gefragt ist, dann :

SELECT * FROM Tabelle WHERE Kundenummer = 1 ORDER BY Datum ASC

Damit bekommst Du unabhängig der Auftragsnummer und des Technikers alle Datensätze zum Kunden 1, sortiert nach Datum.

Soll es einer Auftragsnummer zugeordnet werden, dann
SELECT * FROM Tabelle WHERE Kundenummer = 1 AND Auftragsnummer = '.1234%.' ORDER BY Datum ASC

Um jetzt den Techniker festnageln zu können, muss ja immer der erste Techniker, der zuerst beim Kunden mit einer bestimmten Auftragsnummer war, gewertet werden!
Also brauchts nen Zähler, damit festgehalten wird wieviele Techniker zu jeweiligen Aufträgen im Einsatz waren.
Steht der Zähler beim einzelnen Auftrag für den Techniker bei 1 so ist es ideal.
Steht der Zähler > 1 so ist ein weiterer Techniker unterwegs gewesen. 1:1 wären somit 50% der Fälle.

Muss mal noch weiter darüber nachdenken, doch habe jetzt keine Zeit mehr.

Grüße, Franzx

Franzx
26.04.2008, 18:42:31
Moin, moin!

Als reine SQL-Abfrage bekomme ich es nicht hin.
Es ist ja erforderlich die DS bezogen auf Kundenummer und Techniker zu zählen. Dann müßte 'größer 1' in einer Variablen abgelegt werden und 'gleich 1' in einem anderen Variablen, für den Prozentwert.

Mal sehen ob die fortgeschrittenen MySQL User eine Lösung haben.


Grüße, Franzx