Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-01-2003, 15: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, 15: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, 16: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, 16: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, 16: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, 16: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, 16: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, 16: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, 16: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, 16: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, 16: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, 17: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, 17: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, 17: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, 17: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, 08: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, 09: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, 10: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, 10: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, 10: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


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Avio si prepara ai test del Dimostratore...
Space Pioneer ha annunciato le cause del...
Anthropic avrebbe nuovi antibiotici cont...
Scoperto un 'moltiplicatore nascosto' ne...
DREO: a IFA 2026 4 novità fra cui...
Slackbot genera dashboard e microsite de...
Idrogeno, nuova cella a combustibile rag...
Con la NASA fuori dai giochi, l'ESA risc...
Una falla di ChatGPT permette di estrapo...
Piano clima, 1,34 miliardi per il bonus ...
Porsche esce definitvamente da Bugatti R...
NVIDIA App aggiunge una delle funzioni p...
Come sarebbe il mondo se la luce viaggia...
Titanio, ceramica e zaffiro per HUAWEI W...
Taglio delle accise sul gasolio prorogat...
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: 23:04.


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