Counter für SQL Query über mehrer Tabellen
Hallo zusammen,
ich verstehe von SQL nicht sehr viel. Habe es aber dank Google geschaft mit eine entsprechende Abfrage zu erstellen. Handel sich um eine VMware vCenter DB.
SELECT vpxv_vms.NAME, vpx_datastore.NAME as "Datastore Name", vpxv_hosts.NAME as "Esx Host Name"
FROM VC_Database.dbo.VPXV_VMS,
VC_Database.dbo.VPXV_VM_DATASTORE,
VC_Database.dbo.VPX_DATASTORE,
VC_Database.dbo.VPXV_HOSTS
WHERE ( (vpxv_vms.vmid = vpxv_vm_datastore.vm_id)
AND (vpxv_vm_datastore.ds_id = vpx_datastore.ID)
AND (vpxv_hosts.hostid = vpxv_vms.hostid)
)
ORDER BY vpxv_vms.NAME ASC , vpx_datastore.NAME
Alls Resultat erhalte ich nun folgendes.
Name Datastore Name Esx Host Name
capiq NFS_01 Host1
edu001 NFS_01 Host1
test-1 NFS_02 Host2
test-2 NFS_01 Host2
test-3 NFS_03 Host3
Nun zu meiner Frage:
Wie passe ich die Abfrage an, das mir nur der Datastored Name angezeigt wird mit der Anzahl wie viel mal dieser gefunden wird.
Das Ergebnis müsste dann etwa so aussehen.
Datastored Name Anzahl
NFS1 3
NFS2 1
NFS3 1
Danke im vorraus für eure Hilfe.
ich verstehe von SQL nicht sehr viel. Habe es aber dank Google geschaft mit eine entsprechende Abfrage zu erstellen. Handel sich um eine VMware vCenter DB.
SELECT vpxv_vms.NAME, vpx_datastore.NAME as "Datastore Name", vpxv_hosts.NAME as "Esx Host Name"
FROM VC_Database.dbo.VPXV_VMS,
VC_Database.dbo.VPXV_VM_DATASTORE,
VC_Database.dbo.VPX_DATASTORE,
VC_Database.dbo.VPXV_HOSTS
WHERE ( (vpxv_vms.vmid = vpxv_vm_datastore.vm_id)
AND (vpxv_vm_datastore.ds_id = vpx_datastore.ID)
AND (vpxv_hosts.hostid = vpxv_vms.hostid)
)
ORDER BY vpxv_vms.NAME ASC , vpx_datastore.NAME
Alls Resultat erhalte ich nun folgendes.
Name Datastore Name Esx Host Name
capiq NFS_01 Host1
edu001 NFS_01 Host1
test-1 NFS_02 Host2
test-2 NFS_01 Host2
test-3 NFS_03 Host3
Nun zu meiner Frage:
Wie passe ich die Abfrage an, das mir nur der Datastored Name angezeigt wird mit der Anzahl wie viel mal dieser gefunden wird.
Das Ergebnis müsste dann etwa so aussehen.
Datastored Name Anzahl
NFS1 3
NFS2 1
NFS3 1
Danke im vorraus für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 185455
Url: https://administrator.de/contentid/185455
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
Moin Nachtwächter67,
willkommen imvorraus Forum.
Einfach noch ein SELECT um deine vorhandene Abfrage herumwickeln.
Jetzt:
Nach dem Herumwickeln:
Grüße
Biber
P.S. Bitte bei "SQL-Fragen" immer das konkrete Datenbankblech (z.B. MS SQLServer Express 2008, Oracle 10.2.0.5 oder Access 2010) mit angeben.
Denn "SQL" ist in etwa so standardisiert wie die Buletten-in-Weissmehlpamps-Bezeichnungen bei Burger King und McDonalds.
willkommen im
Einfach noch ein SELECT um deine vorhandene Abfrage herumwickeln.
Jetzt:
SELECT vpxv_vms.NAME, vpx_datastore.NAME as "Datastore Name", vpxv_hosts.NAME as "Esx Host Name"
FROM VC_Database.dbo.VPXV_VMS,
VC_Database.dbo.VPXV_VM_DATASTORE,
VC_Database.dbo.VPX_DATASTORE,
VC_Database.dbo.VPXV_HOSTS
WHERE ( (vpxv_vms.vmid = vpxv_vm_datastore.vm_id)
AND (vpxv_vm_datastore.ds_id = vpx_datastore.ID)
AND (vpxv_hosts.hostid = vpxv_vms.hostid)
)
Nach dem Herumwickeln:
Select x."DataStoreName", count(x.*) as Anzahl from (
SELECT vpxv_vms.NAME, vpx_datastore.NAME as "Datastore Name", vpxv_hosts.NAME as "Esx Host Name"
FROM VC_Database.dbo.VPXV_VMS,
VC_Database.dbo.VPXV_VM_DATASTORE,
VC_Database.dbo.VPX_DATASTORE,
VC_Database.dbo.VPXV_HOSTS
WHERE ( (vpxv_vms.vmid = vpxv_vm_datastore.vm_id)
AND (vpxv_vm_datastore.ds_id = vpx_datastore.ID)
AND (vpxv_hosts.hostid = vpxv_vms.hostid)
)
) x
order by 1
Grüße
Biber
P.S. Bitte bei "SQL-Fragen" immer das konkrete Datenbankblech (z.B. MS SQLServer Express 2008, Oracle 10.2.0.5 oder Access 2010) mit angeben.
Denn "SQL" ist in etwa so standardisiert wie die Buletten-in-Weissmehlpamps-Bezeichnungen bei Burger King und McDonalds.
Moin nightman67,
ich versuche es noch mal - vielleicht dieses Mal SQL Server 2008-kompatibel.
Kann ich leider gerade nicht testen, weil ich keinen im Zugriff habe gerade.
Problem bei meiner Formulierung können eigentlich nur zwei der üblichen SQL-Sollbruchstellen sein:
- Die Pseudofeldnamen mit "Leerzeichen im Namen"
- oder der Alias x innerhalb von Count() verwendet.
Bitte versuch es mal so
upps , Moment... ich sehe gerade, ich spreche als erstes Feld nach dem ersten SELECT ein nicht-existentes an (x."DataStoreName" statt x."DataStore Name")
..also...
Und nein, du musst den Alias "x" nicht durch irgendwas ersetzen.
Es sei denn, du magst z.B. den Alias "y" lieber.
Kannst auch den Alias "Lafontaine" nehmen, der ist auch verfügbar momentan.
Und ob du dich mit dem Vornamen bedankst oder dem Nicknamen...
... es wird beides gern und jedesmal freudig überrascht entgegengenommen.
Aber NIEMALSNICHT im Voraus (oder gar "im vorraus") bedanken.
Grüße
Biber
ich versuche es noch mal - vielleicht dieses Mal SQL Server 2008-kompatibel.
Kann ich leider gerade nicht testen, weil ich keinen im Zugriff habe gerade.
Problem bei meiner Formulierung können eigentlich nur zwei der üblichen SQL-Sollbruchstellen sein:
- Die Pseudofeldnamen mit "Leerzeichen im Namen"
- oder der Alias x innerhalb von Count() verwendet.
Bitte versuch es mal so
upps , Moment... ich sehe gerade, ich spreche als erstes Feld nach dem ersten SELECT ein nicht-existentes an (x."DataStoreName" statt x."DataStore Name")
..also...
Select x.DataStoreName as "DataStore Name", count(*) as Anzahl from (
SELECT vpxv_vms.NAME,
vpx_datastore.NAME as DatastoreName,
vpxv_hosts.NAME as "Esx Host Name"
FROM VC_Database.dbo.VPXV_VMS,
VC_Database.dbo.VPXV_VM_DATASTORE,
VC_Database.dbo.VPX_DATASTORE,
VC_Database.dbo.VPXV_HOSTS
WHERE (
(vpxv_vms.vmid = vpxv_vm_datastore.vm_id)
AND (vpxv_vm_datastore.ds_id = vpx_datastore.ID)
AND (vpxv_hosts.hostid = vpxv_vms.hostid)
)
) x
order by 1
Und nein, du musst den Alias "x" nicht durch irgendwas ersetzen.
Es sei denn, du magst z.B. den Alias "y" lieber.
Kannst auch den Alias "Lafontaine" nehmen, der ist auch verfügbar momentan.
Und ob du dich mit dem Vornamen bedankst oder dem Nicknamen...
... es wird beides gern und jedesmal freudig überrascht entgegengenommen.
Aber NIEMALSNICHT im Voraus (oder gar "im vorraus") bedanken.
Grüße
Biber
Moin Nachtmahr67,
nochmal uuppps... ist mir nicht aufgefallen, dass ich jegliches "GROUP BY" vollkommen unterschlagen habe. *peinlich*
...ähhm ja... ich schieb es mal auf die Wärme heute und gestern und hoffe, dass es dort, wo wir später mal alle hingehören, etwas schattiger ist.
obwohl, Gerüchten zufolge....
Egal, schönen Abend dir
Biber
nochmal uuppps... ist mir nicht aufgefallen, dass ich jegliches "GROUP BY" vollkommen unterschlagen habe. *peinlich*
...ähhm ja... ich schieb es mal auf die Wärme heute und gestern und hoffe, dass es dort, wo wir später mal alle hingehören, etwas schattiger ist.
obwohl, Gerüchten zufolge....
Egal, schönen Abend dir
Biber