Sql Union VB.NET

domenica 16 dicembre 2007 - 21.25

riminese77 Profilo | Junior Member

Ciao a tutti, mi serve estrarre dallo stesso DB ma in due tabelle diverse, il numero di user presenti in quelle tabelle. Uso access e vb.net.
La mia SQL è la seguente:
SQL = "SELECT Count(User) as Qa FROM Allenatori UNION ALL SELECT count(user) as Qs FROM Associazione"

Per estrarre i dati uso :

Dim ds1 As OleDbDataReader = cmd.ExecuteReader
ds1.Read()

AllenatoriTotali = ds1.Item("Qa")
SquadreInTotale = ds1.Item("Qs")

Per allenatoritotali va bene, ma quando arriva a squadreintotale mi da l'errore:
System.IndexOutOfRangeException SQ .

Ora se prese singolarmente le due select funzionano...dove sbaglio?
grazie

lbenaglia Profilo | Guru

>Ora se prese singolarmente le due select funzionano...dove sbaglio?
L'operatore UNION restituisce l'unione di due o più query di SELECT in un unico resultset.
La query che hai scritto restituirà un resultset di una sola colonna chiamata Qa (perché come nome di colonna viene considerato solo quello relativo alla prima SELECT ignorando eventuali alias sulle altre query) e due righe relative rispettivamente alla prima ed alla seconda query.
Quindi, lato VB la prima Read ti restituirà AllenatoriTotali mentre una seconda il valore di SquadreInTotale.

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

riminese77 Profilo | Junior Member

PERFETTO!

ora ho inserito come mi hai detto tu, queste righe e funziona perfettamente!

ds1.read()
AllenatoriTotali = ds1.Item("Qa")
ds1.Read()
SquadreInTotale = ds1.Item("Qa")
ds1.Close()
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5