Snipes83 Geschrieben 15. Juli 2011 Teilen Geschrieben 15. Juli 2011 Hi @ all, also entweder war ich gestern zulang unterwegs oder ich bin heut nich mehr klar im Kopf, aber vllt könnt ihr mir ja helfen: Ich habe eine Selct-Abfrage welche mir alle Kunden eines bestimmten Mitarbeites auflistet und abfragt ob dem Kunden seine letzte Beratung schon über eine Jahr her ist, oder er noch keine Beratung bekommen hat (Beratungsdatum = leer). Das klappt auch ganz wunderbar und ich bekomme vom Mitarbeiter zum Beispiel 1000 Kunden angezeigt auf denen das Kriterium zu trifft. Jetzt will ich aber zeitgleich ausgeben wieviele Kunden dieser Berater insgesammt hat. Dies würde ja mit Count gehen, aber durch den Wherefall mit dem Datum, zähle ich doch nur die Kunden auf denen das zutrifft oder täusche ich mich da? Wie setzte ich das am geschicktesten um das ich alle Kunden eines Mitabeiters (Der Mitarbeiter wird auch im Wherefall mit abgefragt) gezählt bekomme, aber als ausgabe nur die kunden habe auf dem das Datumskriterium zutrifft? Müsste das nicht mit Count und Having funktionieren? Steh grad iwie voll auf dem Schlauch! Wäre dankbar wenn mir jemand nen Tipp in die richtige Richtung geben könnte! MFG Snipes83 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 15. Juli 2011 Teilen Geschrieben 15. Juli 2011 Warum baust Du nicht einen passenden View, den Du dann im Grunde wie eine Tabelle handhaben kannst (alternativ ginge auch eine Stored Procedure) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 15. Juli 2011 Teilen Geschrieben 15. Juli 2011 Hi, wie eine SP hier helfen kann weiß ich nicht, aber wenn ich Dich richtig verstanden habe, dann musst Du dazu mit Subselects arbeiten. Ich kenn die genaue Tabellenstruktur nicht, daher hier mal im Pseudocode: SELECT c.mitarbeiter_name, a.kunden_gesamt, b.kunden_ohne_beratung FROM (SELECT count(*) AS kunden_gesamt ,mitarbeiter_id AS kunden_gesamt FROM tab GROUP BY mitarbeiter_id) a, (SELECT count(*) AS kunden_ohne_beratung, mitarbeiter_id FROM tab WHERE beratungsdatum IS NULL AND ...) b, tab c WHERE c.mitarbeiter_id=xyz AND c.mitarbeiter_id=a.mitarbeiter_id AND a.mitarbeiter_id=b.mitarbeiter_id Du machst Dir also zwei Untermengen mit den zweils gewünschten Ergebnissen und verknüpfst diese dann mit einer entsprechenden ID (ich hab hier mal angenommen, dass ein Mitarbeiter eine eindeutige ID hat). Aus der Ursprungstabelle kannst Dir dann weitere Informationen holen (Name etc). Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 15. Juli 2011 Teilen Geschrieben 15. Juli 2011 wie eine SP hier helfen kann weiß ich nicht [..] Eine SP kann in Postgres auch ein Resultset liefern, d.h. man kann den Select innerhalb der SP ausführen und das Resultset liefern, wobei dann die SP eine ID o.ä. übergeben bekommt. Wäre halt die Frage was man genau braucht. So wie ich die Frage ja verstehe wird nur genau ein uint Zahlenwert erwartet, nämlich die Anzahl und das kann ich in eine SP auch machen die dann einen uint liefert. Die SP kann ich dann innerhalb des selects, den man eh ausführt verwenden um z.B. dann zu jedem Mitarbeiter die Anzahl als eigenständige Spalte zu liefern. Natürlich geht das auch mit einem Subselect. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Snipes83 Geschrieben 18. Juli 2011 Autor Teilen Geschrieben 18. Juli 2011 Hallo, perfekt, es haben genau die 2 Leute geantwortet von denen ich es erhofft habe @flashpixx An einer Prozedure hatte ich auch schon gedacht, das Problem ist dass das ganze in einem Programm eingegeben werden muss welches nur DML akzeptiert. So fiel das also flach. @dim Na klar, subselects :upps Hat wunderbar funktioniert! Manchmal sieht man den Wald vor lauter Bäumen nicht. Vielen Dank an euch 2, hat mich super weitergebracht! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 18. Juli 2011 Teilen Geschrieben 18. Juli 2011 An einer Prozedure hatte ich auch schon gedacht, das Problem ist dass das ganze in einem Programm eingegeben werden muss welches nur DML akzeptiert. So fiel das also flach. Wieso? Sehe ich jetzt nicht das Problem, denn Data Manipulation Language wäre unter Postgres für eine SP: select myproc( parameter ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.