Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-01-2003, 16:20   #1
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
[VB] La funzione SUM() su SQL Server 2000

Devo fare la somma di un campo della mia Tabella, il Campo "Quantita",

in MySQL esiste la funzione SUM(#nome_campo_da_sommare#), SELECT ID,Nome,Cognome,SUM(Quantita) FROM Contatti

ma in sql server 2000 come si fa ???
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 16:43   #2
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Esattamente nello stesso modo

magari ti consigli di cambiarla così è più chiara... almeno per me

SELECT ID,Nome,Cognome,SUM(Quantita) AS TotaleQuantita FROM Contatti
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:05   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Le funzioni di aggregazione quali Sum, Max, Min, Avg sono solitamente standard in tutti i linguaggi SQL...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:12   #4
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
FUNZIONA!!!

Codice:
Dim oComm As New SqlCommand("SELECT Consistenza.ID_Articolo,Consistenza.ID_Client,Articoli.ID,Client.ID,Articolo,Quantita FROM Consistenza,Client,Articoli WHERE Consistenza.ID_Articolo = Articoli.ID AND Consistenza.ID_Client = Client.ID AND ID_Client = '" & lwClientResoconto.SelectedItems.Item(0).Text & "'", oConn)


Con "SUM()" NON FUNZIONA!!!

Codice:
Dim oComm As New SqlCommand("SELECT Consistenza.ID_Articolo,Consistenza.ID_Client,Articoli.ID,Client.ID,Articolo,SUM(Quantita) FROM Consistenza,Client,Articoli WHERE Consistenza.ID_Articolo = Articoli.ID AND Consistenza.ID_Client = Client.ID AND ID_Client = '" & lwClientResoconto.SelectedItems.Item(0).Text & "'", oConn)
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:16   #5
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
beh è normale se i campi che hai nella SELECT e su cui non fai SUM() non li includi in una grausola "GROUP BY" se li vuoi raggruppare per ID_Articolo, ID_Cliente ecc...

Altrimenti li ltogli e lasci solo la SUM()
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:24   #6
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
Mi estrae solo il primo Articolo e poi mi da Errore ancora prima di estrarre la prima Quantita...

Codice:
oConn.Open()
Dim oComm As New SqlCommand("SELECT Consistenza.ID_Articolo,Consistenza.ID_Client,Articoli.ID,Client.ID,Articolo,SUM(Quantita) FROM Consistenza,Client,Articoli WHERE Consistenza.ID_Articolo = Articoli.ID AND Consistenza.ID_Client = Client.ID AND ID_Client = '" & lwClientResoconto.SelectedItems.Item(0).Text & "' GROUP BY Consistenza.ID_Articolo,Consistenza.ID_Client,Articoli.ID,Client.ID,Dim oRead As SqlDataReader = oComm.ExecuteReader
While oRead.Read()
li = lwResocontoTotale.Items.Add(oRead("Articolo"))
li.SubItems.Add(oRead("Quantita"))
End While
oConn.Close()
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:26   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Infatti... La Sum deve ritornare un solo record...quindi o metti come solo campo del risultato della query una Sum o devi usare Group By...
Nel secondo caso nella Select puoi selezionare solamente i campi per i quali raggruppi o campi per i quali non raggruppi, ma per cui specifichi una funzione di aggregazione (come ad esempio al Sum)...

Un esempio:

SELECT Nome, Cognome, Count(IDFattura) As NumeroFatture, Sum(Importo) As TotaleImporto
FROM AnagraficaClienti, Fatture
WHERE AnagraficaClienti.IDCliente = Fatture.IDClient
GROUP BY Nome, Cognome
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:27   #8
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
hai provato ad eseguire la query nel Query Analyzer?
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:28   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Comuqnue VB non è l'ambiente migliore per testare le query...molto meglio testarle con un client testuale almeno si possono fare cambiamenti e test molto più velocemente che in un programma completo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:37   #10
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
Quote:
Originally posted by "Duncan"

hai provato ad eseguire la query nel Query Analyzer?
Come mi puo' aiutare ???
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 17:38   #11
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
Quote:
Originally posted by "cionci"

Infatti... La Sum deve ritornare un solo record...quindi o metti come solo campo del risultato della query una Sum o devi usare Group By...
Nel secondo caso nella Select puoi selezionare solamente i campi per i quali raggruppi o campi per i quali non raggruppi, ma per cui specifichi una funzione di aggregazione (come ad esempio al Sum)...

Un esempio:

SELECT Nome, Cognome, Count(IDFattura) As NumeroFatture, Sum(Importo) As TotaleImporto
FROM AnagraficaClienti, Fatture
WHERE AnagraficaClienti.IDCliente = Fatture.IDClient
GROUP BY Nome, Cognome

Scusa ma, "NumeroFatture" e "TotaleImporto" sono due nomi delle tue tabelle ???
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 18:06   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
No sono il nome delle collone del risultato della query in cui verranno riportate le varie somme e conteggi...

Ti faccio un esempio...

Tabella Fatture
IDFattura IDCliente Importo
1 1 100
2 1 200
3 2 111
4 2 100
5 1 200

Tabella AnagraficaClienti
IDCliente Nome Cognome
1 Pinco Pallino
2 Tizio Caio

Il risultato della query sarà :

Nome Cognome NumeroFatture TotaleImporto
Pinco Pallino 3 500
Tizio Caio 2 211

Comunque questo sono cose abbastanza base dell'SQL... Ti conviene dare un'occhiata a qualche guida...anche su internet...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 18:29   #13
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
Scusami ma ho trovato un altro metodo, e forse piu' facile ma non mi funziona!!!

Codice:
Dim oComm As New SqlCommand("SELECT Consistenza.ID_Articolo,Consistenza.ID_Client,Articoli.ID,Client.ID,Articolo,(SELECT SUM(Quantita) FROM Consistenza C WHERE C.ID_Articolo = Consistenza.ID_Articolo) FROM Consistenza,Client,Articoli WHERE Consistenza.ID_Articolo = Articoli.ID AND Consistenza.ID_Client = Client.ID AND ID_Client = '" & lwClientResoconto.SelectedItems.Item(0).Text & "'", oConn)
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 18:42   #14
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
Quote:
Originally posted by "Duncan"

hai provato ad eseguire la query nel Query Analyzer?
COME SI USA ???
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2003, 18:50   #15
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
FUNZIONA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Codice:
Dim oComm As New SqlCommand("SELECT Consistenza.ID_Articolo,Consistenza.ID_Client,Articoli.ID,Client.ID,Articolo,(SELECT SUM(Quantita)FROM Consistenza C WHERE C.ID_Articolo = Consistenza.ID_Articolo)AS Quantita FROM Consistenza,Client,Articoli WHERE Consistenza.ID_Articolo = Articoli.ID AND Consistenza.ID_Client = Client.ID AND ID_Client = '" & lwClientResoconto.SelectedItems.Item(0).Text & "'", oConn)
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2003, 09:55   #16
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
vorrei chiedere solamente un ultima cosa e poi ho finito questa query......


alla solita Query in questione, dovrei fargli fare pure uno smaltimento degli Articoli identici, cioe':

Di tutti gli "Articoli" con Nome identico che trova nella Tabella "Consistenza", ne deve visualizzare solo uno,

CHIARAMENTE!!! la frase esatta e' : di tutti gli "ID_Articolo" che trovi nella Tabelle "Consistenza", visualizzane solo uno,

MA!!! pur continuando a Sommare TUTTE le Celle "Quantita".........

LE MIE TABELLE:

1)Consistenza = |ID_Articolo|ID_Client|Quantita|
2)Client = |ID|Nome|Cognome|
3)Articoli = |ID|Articolo|

Ci possiamo arrivare ???
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2003, 10:15   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
SQL Server dovrebbe supportare anche le subquery nel from:

SELECT DISTINCT * FROM (la tua query)

Attento al formato della query...non so se bisogna usare le tonde o le quadre...oppure se c'è bisogno di rinominare la query per assegnargli un nome...
In Access si fa così (mi sembra):

SELECT DISTINCT * FROM [la tua query]. AS Tabella;

Comunque...ripeto...queste cose sono abbastanza basilari per chi deve lavorare con MS SQL...ti conviene cercare una guida per l'SQL di MS SQL...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2003, 11:07   #18
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
Ho provato a fare questo tentativo MA!!!!!!

Codice:
SELECT DISTINCT ID_Articolo FROM (SELECT Consistenza.ID_Articolo,Consistenza.ID_Client,Articoli.ID,Client.ID,Articolo,(SELECT SUM(Quantita)FROM Consistenza C WHERE C.ID_Articolo = Consistenza.ID_Articolo)AS Quantita FROM Consistenza,Client,Articoli WHERE Consistenza.ID_Articolo = Articoli.ID AND Consistenza.ID_Client = Client.ID AND ID_Client = 1)AS Consistenza
con il Query Analyzer mi da questo errore:

Server: messaggio 8156, livello 16, stato 1, riga 1
La colonna 'ID' è stata specificata più volte per 'Consistenza'.
race2 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2003, 11:10   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non la puoi richiamare nuovamente Consistenza...dagli un altro nome...
Inoltre devi specificare * dopo distinct altrimenti nel risultato trovi solamente gli ID...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2003, 11:13   #20
race2
Senior Member
 
Iscritto dal: Aug 2000
Messaggi: 1209
Quote:
Originally posted by "cionci"

Non la puoi richiamare nuovamente Consistenza...dagli un altro nome...
Inoltre devi specificare * dopo distinct altrimenti nel risultato trovi solamente gli ID...
Codice:
SELECT DISTINCT * FROM (SELECT Consistenza.ID_Articolo,Consistenza.ID_Client,Articoli.ID,Client.ID,Articolo,(SELECT SUM(Quantita)FROM Consistenza C WHERE C.ID_Articolo = Consistenza.ID_Articolo)AS Quantita FROM Consistenza,Client,Articoli WHERE Consistenza.ID_Articolo = Articoli.ID AND Consistenza.ID_Client = Client.ID AND ID_Client = 1)AS Consistenza2
ERRORE!!!

Server: messaggio 8156, livello 16, stato 1, riga 1
La colonna 'ID' è stata specificata più volte per 'Consistenza2'.
race2 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Il razzo spaziale New Glenn di Blue Orig...
La Cina si prepara al primo lancio orbit...
Sale LAN, la Manovra 2027 introduce una ...
11 prezzi imperdibili in Amazon: non sol...
Giù i prezzi di Xiaomi 17T e Xiao...
Una tassa di 5,5 centesimi su ogni gigab...
Vuoi clonare un videogioco con l'IA? Cla...
Furto da 6,3 miliardi di dollari, Binanc...
Gli USA dipendono dai robot stranieri: T...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Il JPL estende la vita operativa della s...
DAZN Full è in offerta: tutta la ...
GTA 6 su PC potrebbe arrivare prima del ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v