Hallo Gruppe,
da ich ja weiß, dass es hier mindestens ein Leut gibt, welches SQL wohl mit der Muttermilch aufgesogen hat, möchte ich es mir nach 2h Experimentiererei doch versuchen mal leicht zu machen.
Über Verkettung von Tabellen komme ich an Standorte (branch_office), denen eine Anzahl Clients zugeordnet ist von denen wiederum einige den Kommentar "Server" haben können. Als Ergebnisset wünsche ich mir eine sortierte Tabelle mit den Spalten "Standort", "# Clients"(Gesamclients-Server) und "# Server"(die mit dem Kommentar).
Ich muss schon jedesmal bei join die Doku lesen, weil ich SQL einfach zu selten vor der Nase habe. Jetzt habe ich noch das UNION gefunden, welches zwei Ergebnissets kombinieren kann. Algorithmisch gedacht ist mir klar, dass das Überlagern zweier rows eigentlich nicht ohne Regeldefinition funktionieren kann, ich will doch aber das erreichte jetzt nicht noch mit $scriptsprache oder gar Excel zu dem machen, was ich erwarte.
Diesen Code habe ich bis jetzt:
select branch_office_name as Kunde, count (*) as Client, 0 as Server from managedcomputer left join branchmemberresourcerel ON managedcomputer.resource_id=branchmemberresourcerel.resource_id left join branchofficedetails ON branchmemberresourcerel.branch_office_id=branchofficedetails.branch_office_i d left join managedcomputerextn ON managedcomputer.resource_id=managedcomputerextn.resource_id where description IS NULL group by branch_office_name UNION select branch_office_name as Kunde, 0 as Client, count (*) as Server from managedcomputer left join branchmemberresourcerel ON managedcomputer.resource_id=branchmemberresourcerel.resource_id left join branchofficedetails ON branchmemberresourcerel.branch_office_id=branchofficedetails.branch_office_i d left join managedcomputerextn ON managedcomputer.resource_id=managedcomputerextn.resource_id where description IS NOT NULL group by branch_office_name order by kunde, client
und er liefert z.B.
AT 0 6 AT 26 0 BL 7 0 CL 0 2 CL 6 0
was ich mir wünsche ist aber
AT 20 6 BL 7 0 CL 4 2
Möchte sich der/die Angesprochene(n) gern an dieser Aufgabe austoben?
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
Hallo Ronny,
die einfachste Lösung, wenn gleich auch aus der Kategorie quick & dirty wäre das Ergebnis deiner Anfrage noch einmal nach den Standorten zu Gruppieren und dabei Summe der Clients und Server aufsummieren.
Wie gesagt nicht schön, aber für den einmaligen Gebrauch ...
Jens
Am March 21, 2018 6:02:13 PM UTC schrieb ronny@seffner.de:
Hallo Gruppe,
da ich ja weiß, dass es hier mindestens ein Leut gibt, welches SQL wohl mit der Muttermilch aufgesogen hat, möchte ich es mir nach 2h Experimentiererei doch versuchen mal leicht zu machen.
Über Verkettung von Tabellen komme ich an Standorte (branch_office), denen eine Anzahl Clients zugeordnet ist von denen wiederum einige den Kommentar "Server" haben können. Als Ergebnisset wünsche ich mir eine sortierte Tabelle mit den Spalten "Standort", "# Clients"(Gesamclients-Server) und "# Server"(die mit dem Kommentar).
Ich muss schon jedesmal bei join die Doku lesen, weil ich SQL einfach zu selten vor der Nase habe. Jetzt habe ich noch das UNION gefunden, welches zwei Ergebnissets kombinieren kann. Algorithmisch gedacht ist mir klar, dass das Überlagern zweier rows eigentlich nicht ohne Regeldefinition funktionieren kann, ich will doch aber das erreichte jetzt nicht noch mit $scriptsprache oder gar Excel zu dem machen, was ich erwarte.
Diesen Code habe ich bis jetzt:
select branch_office_name as Kunde, count (*) as Client, 0 as Server from managedcomputer left join branchmemberresourcerel ON managedcomputer.resource_id=branchmemberresourcerel.resource_id left join branchofficedetails ON branchmemberresourcerel.branch_office_id=branchofficedetails.branch_office_i d left join managedcomputerextn ON managedcomputer.resource_id=managedcomputerextn.resource_id where description IS NULL group by branch_office_name UNION select branch_office_name as Kunde, 0 as Client, count (*) as Server from managedcomputer left join branchmemberresourcerel ON managedcomputer.resource_id=branchmemberresourcerel.resource_id left join branchofficedetails ON branchmemberresourcerel.branch_office_id=branchofficedetails.branch_office_i d left join managedcomputerextn ON managedcomputer.resource_id=managedcomputerextn.resource_id where description IS NOT NULL group by branch_office_name order by kunde, client
und er liefert z.B.
AT 0 6 AT 26 0 BL 7 0 CL 0 2 CL 6 0
was ich mir wünsche ist aber
AT 20 6 BL 7 0 CL 4 2
Möchte sich der/die Angesprochene(n) gern an dieser Aufgabe austoben?
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
Hallo Jens, Hallo Mitleser,
die einfachste Lösung, wenn gleich auch aus der Kategorie quick & dirty wäre das Ergebnis deiner Anfrage noch einmal nach den Standorten zu Gruppieren und dabei Summe der Clients und Server aufsummieren.
Als Ansatz ist mir das so auch als Idee gekommen, offenbar kenne ich aber zu wenig Syntax um das umzusetzen.
Nach einer Nacht Schlaf, habe ich mein Ansatz mit einem weiteren Select gekapselt:
SELECT Kunde, SUM(Client)-SUM(Server) as Clients, SUM(Server) as Servers FROM ( Jetzt der Code den ich schon hatte ) x group by Kunde
Das Ergebnis scheint zu stimmen, aber vermutlich hast Du recht und das ist von gutem Code und Optimierung noch weit weg.
Danke.
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
lug-dd@mailman.schlittermann.de