Newsgroup: it.comp.lang.visual-basic
Titolo: query

devo tenere 4 corsi. gli alunni sono in una tabella, ogni record oltre al
nome ha un numerico 1-4 per il corso.
vorrei sapere quanti sono per corso, con una query unica.
una cosa tipo
select count(*) as corso1 from tbalunni where corso=1, count(*) as corso2
from tbalunni where corso=2, count(*) as corso3 from tbalunni where
corso=3,
count(*) as corso4 from tbalunni where corso=4
ma che funzionasse. e al momento sono molto prossimo alla fusione.
cosa devo scrivere?
grazie, a.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 grazie, a.
SELECT COUNT(*) AS CONTEGGIO, CORSO
FROM TABELLA
GROUP BY CORSO
Ciao
Alberto
-- 
La forza di volontà è guardare negli occhi una ragazza in topless.

 GROUP BY CORSO
Scusa, non vorrei avere frainteso.
Se ti servono tutti i conteggi su un unico record:
SELECT
    SUM(CASE
        WHEN CORSO=1 THEN 1
        ELSE 0 END) AS CORSO1
,    SUM(CASE
        WHEN CORSO=2 THEN 1
        ELSE 0 END) AS CORSO2
,    SUM(CASE
        WHEN CORSO=3 THEN 1
        ELSE 0 END) AS CORSO3
,    SUM(CASE
        WHEN CORSO=4 THEN 1
        ELSE 0 END) AS CORSO4
FROM TABELLA
Ma non è una cosa proprio bella bella...
Alberto
-- 
Ho spiegato a mio nipote cos'è il compromesso: se per le vacanze tua 
madre vuole andare al mare e tuo padre invece in montagna, il 
compromesso è che si va al mare, ma il papà può portarsi gli sci.

 Ma non è una cosa proprio bella bella...
Infatti, immagino quando i corsi diventeranno 5 :)
Roba simile l'ho usata quando dovevo fare stampe specifiche su excel,
quindi colonne "infinite" e query creata a runtime con #n campi necessari.

Albe V° ha scritto:
grazie alberto, speravo che tu fossi in ascolto :)
dunque
barando rispetto ai dati che avevo fornito qui, ho usato 4 altri campi che
avevo in tabella, c1-c4, logici (dai quali avevo ricavato quello numerico).
SELECT sum(c1) as corso1, sum(c2) as corso2, sum(c3) as corso3, sum( c4)
as corso4 from tbalunni
cosi' funzionicchia, anche se giustamente fornisce numeri negativi
-15, -15, -12, -12
la tua, che mi incuriosisce perche non conoscevo il costrutto
select sum(case when corso=1 then 1 else 0 end) as corso1, sum(case when
corso=2 then 1 else 0 end) as corso2, sum(case when corso=3 then 1 else 0
end) as corso3, sum(case when corso=4 then 1 else 0 end) as corso4 from
tbalunni
a access non piace molto
select sum(case when corso=1 then 1 else 0 end) as corso1, sum(case when
corso=2 then 1 else 0 end) as corso2, sum(case when corso=3 then 1 else 0
end) as corso3, sum(case when corso=4 then 1 else 0 end) as corso4 from
tbalunni
errore di sintassi (operatore mancante) nell'espressione 'sum(case when
corso=1 then 1 else 0 end)'
cosa vuol dire, e cosa vuole?


 quindi colonne "infinite" e query creata a runtime con #n campi necessari.
si', in vb l'avrei fatto in 3 secondi. ma volevo esercitarmi: devo fare
corsi anche, ehm, su access :))
livello minimo. ci sono persone che mettono dentro 3000 righe di tabella
word e poi vogliono estrarre i dati. fin li' dovrei arrivarci :)
ciao, a.


 grazie, a.
Non è bella ma funziona anche se il numero dei corsi aumenta
TRANSFORM Sum(Tabella1.NumCorso) AS SommaDiNumCorso
SELECT Tabella1.Campofittizio, Count(Tabella1.ID) AS [Totale di ID]
FROM Tabella1
GROUP BY Tabella1.Campofittizio
PIVOT Tabella1.NumCorso;
-- 
Greg 

 Non è bella ma funziona anche se il numero dei corsi aumenta
Che mi vado a inventare!!!!
Cosi mi pare meglio:
SELECT Tabella1.NumCorso, Count(Tabella1.NumCorso) AS ConteggioDiNumCorso
FROM Tabella1
GROUP BY Tabella1.NumCorso;
-- 
Greg 

greg ha scritto:



intanto grazie anche a te
ho girato cosi
TRANSFORM Sum(tbalunni.Corso) AS SommaDiCorso
SELECT tbalunni.appunti, Count(tbalunni.ID) AS [Totale di ID]
FROM tbalunni
GROUP BY tbalunni.appunti
PIVOT tbalunni.Corso;
appunti e' il solito memo, visto che voleva un campo esistente.
cosi' funziona, ma da' risultati strani. il record e' cosi
appunti : vuoto
totale di ID: 54 'ok, n. record
1: 15
2: 30
3: 36
4: 48
calcolando che dovrebbero essere 15, 15, 12, 12
sembra che faccia come delle somme
1, 1+2, ?, ?+4
cosa significa?


greg ha scritto:



GRANDE :)
SELECT tbalunni.Corso, Count(tbalunni.Corso) AS ConteggioDiCorso
FROM tbalunni
GROUP BY tbalunni.Corso;
15, 15, 12, 12
a group non ci penso mai, invece e' una gran cosa. che pivello che sono.


 TRANSFORM Count(Tabella1.NumCorso)
e funziona pure questa, solo che essendo pivot se aumentano i corsi sviluppa 
in orizzontale
-- 
Greg 

 grazie, a.
Emh, scusa, ma la prima query che avevo postato, non era la stessa 
cosa?
Alberto
-- 
Carlo Rubbia: Siamo su un treno che va a trecento chilometri all'ora, 
non sappiamo dove ci sta portando e, soprattutto, ci siamo accorti che 
non c'è il macchinista.

 cosa?
Si, infatti è uguale, anzi ancora piu corta.
E soprattutto funzia, che poi è quello che volevamo :)
-- 
Greg 

 cosa?
hai ragionissima. scusa, ti da' l'idea dello stato fondente-gassoso dei
miei neuroni.
a mia parziale discolpa c'e' che mi ha distratto con l'altra gioiosa
macchina da guerra :)
rigrazie e ciao, a.
