Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-05-2006, 14:33   #1
vicus
Member
 
Iscritto dal: Oct 2004
Città: Rossano Veneto
Messaggi: 110
[SQL]Errore in una query con GROUP BY

Il DB è composto da tre tabelle:
Ordine(td,nome,posti,data),Piatti(id,descrizione),Portate(id,descrizione) e da una tabella di appoggio Dettagli(idOrd,idPiatto,idPortata).
La query è la seguente:

SELECT Ordine.nome, SUM(Ordine.posti), Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
WHERE Ordine.data=<input>
GROUP BY portate.descrizione,piatti.descrizione

Ma mi da questo errore:
[Microsoft][ODBC SQL Server Driver][SQL Server]La colonna 'ordini.nome' non è valida nell'elenco di selezione perché non è inclusa né in una funzione di aggregazione né nella clausola GROUP BY.

Come risolvo il mio problema?
__________________
vicus è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:04   #2
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Hai messo una funzione di aggregazione sulla select

Codice:
SELECT Ordine.nome, SUM(Ordine.posti), Piatti.descrizione, Portate.descrizione
quindi nella group by

devi mettere gli altri tre campi, altrimenti ti da errore

Codice:
GROUP BY Ordine.nome, Piatti.descrizione, Portate.descrizione
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:13   #3
vicus
Member
 
Iscritto dal: Oct 2004
Città: Rossano Veneto
Messaggi: 110
Non posso fare così perchè ho bisogno della somma di tutti gli ordini che hanno quel piatto in quella portata.
Questo non è un problema perchè la somma la potrei farla dopo però nemmeno la query
Codice:
SELECT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
WHERE Ordine.data=<input>
GROUP BY portate.descrizione,piatti.descrizione
funziona anche se non c'è la funzione di aggregazione SUM().
__________________
vicus è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:29   #4
vicus
Member
 
Iscritto dal: Oct 2004
Città: Rossano Veneto
Messaggi: 110
Errata corrige:
leggendo una dispensa mi sono ricordato che con il GROUP BY si una HAVING quindi:
Codice:
SELECT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
GROUP BY portate.descrizione,piatti.descrizione 
HAVING Ordine.data=<input>
ma comunque non funziona e l'errore si è esteso alla data perchè non fa parte ne di una funzione di aggregazione ne nella clausola GROUP BY.
__________________
vicus è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:42   #5
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Quote:
Originariamente inviato da vicus
Errata corrige:
leggendo una dispensa mi sono ricordato che con il GROUP BY si una HAVING quindi:
Codice:
SELECT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
GROUP BY portate.descrizione,piatti.descrizione 
HAVING Ordine.data=<input>
ma comunque non funziona e l'errore si è esteso alla data perchè non fa parte ne di una funzione di aggregazione ne nella clausola GROUP BY.
Puoi usare where od having a seconda di quello che devi fare
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:45   #6
DvL^Nemo
Senior Member
 
L'Avatar di DvL^Nemo
 
Iscritto dal: Nov 2001
Città: 100 metri dal mare
Messaggi: 4866
Prova cosi'

Quote:
SELECT DISTINCT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
WHERE Ordine.data=<input>
DvL^Nemo è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:47   #7
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Quote:
Originariamente inviato da vicus
Non posso fare così perchè ho bisogno della somma di tutti gli ordini che hanno quel piatto in quella portata.
Questo non è un problema perchè la somma la potrei farla dopo però nemmeno la query
Codice:
SELECT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
WHERE Ordine.data=<input>
GROUP BY portate.descrizione,piatti.descrizione
funziona anche se non c'è la funzione di aggregazione SUM().
Se devi fare la somma di tutti gli ordini non puoi mettere anche Ordine.nome nella select, se ho capito bene com'è strutturato il DB...

Ordine.nome cos'è? Nella tabella ordini cosa c'è?
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:48   #8
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Quote:
Originariamente inviato da DvL^Nemo
Prova cosi'

Ma così dopo riscia di non poter fare la somma delle protate mi sembra
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:52   #9
DvL^Nemo
Senior Member
 
L'Avatar di DvL^Nemo
 
Iscritto dal: Nov 2001
Città: 100 metri dal mare
Messaggi: 4866
Hai ragione, mi sono limitato a leggere l'ultima query ( dove non c'era traccia del sum ).. cmq ci sarebbe da vedere come e' struturato il DB per capire cosa serve e cosa fare..
Ciao !
DvL^Nemo è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:54   #10
vicus
Member
 
Iscritto dal: Oct 2004
Città: Rossano Veneto
Messaggi: 110
Quote:
Originariamente inviato da Duncan
Se devi fare la somma di tutti gli ordini non puoi mettere anche Ordine.nome nella select, se ho capito bene com'è strutturato il DB...

Ordine.nome cos'è? Nella tabella ordini cosa c'è?
Ordine(id,nome,posti,data)

posso rinunciare alla somma ma questa dovrebbe funzionare
Codice:
SELECT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
GROUP BY portate.descrizione,piatti.descrizione 
HAVING Ordine.data=<input>
ed invece non va.
__________________
vicus è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:54   #11
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Quote:
Originariamente inviato da DvL^Nemo
Hai ragione, mi sono limitato a leggere l'ultima query ( dove non c'era traccia del sum ).. cmq ci sarebbe da vedere come e' struturato il DB per capire cosa serve e cosa fare..
Ciao !

A leggere la prima query che ha scritto la soluzione è non mettere Ordine.nome nell'elenco della select, ma bisogna vedere se gli serve o meno quella colonna...
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:56   #12
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Quote:
Originariamente inviato da vicus
Ordine(id,nome,posti,data)

posso rinunciare alla somma ma questa dovrebbe funzionare
Codice:
SELECT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
GROUP BY portate.descrizione,piatti.descrizione 
HAVING Ordine.data=<input>
ed invece non va.

C'è un errore di fondo, così non ti funzionerà mai, le colonne che specifichi nella clausola select le devi mettere anche nella group by a meno che non sia usate, nella select stessa, in funzioni di aggregazione ([i]SUM, COUNT, AVG ecc)
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:57   #13
DvL^Nemo
Senior Member
 
L'Avatar di DvL^Nemo
 
Iscritto dal: Nov 2001
Città: 100 metri dal mare
Messaggi: 4866
Quote:
Originariamente inviato da vicus
Ordine(id,nome,posti,data)

posso rinunciare alla somma ma questa dovrebbe funzionare
Codice:
SELECT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
GROUP BY portate.descrizione,piatti.descrizione 
HAVING Ordine.data=<input>
ed invece non va.
E allora se non ti serve la somma prova questa che funziona

Quote:
SELECT DISTINCT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
WHERE Ordine.data=<input>
DvL^Nemo è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 15:59   #14
vicus
Member
 
Iscritto dal: Oct 2004
Città: Rossano Veneto
Messaggi: 110
Non posso usare usare funzioni di aggregazione, togliere il nome o includerlo nel group by.
Mi dovro inventare qualcosa costituito da più query.
__________________
vicus è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 16:01   #15
DvL^Nemo
Senior Member
 
L'Avatar di DvL^Nemo
 
Iscritto dal: Nov 2001
Città: 100 metri dal mare
Messaggi: 4866
Esegui la query che ti ho scritto e vediamo se funziona
Tanto hai detto il SUM lo recuperi da altre parti..
Ciao !
DvL^Nemo è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 16:02   #16
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Quote:
Originariamente inviato da DvL^Nemo
E allora se non ti serve la somma prova questa che funziona


Si con la distinct funziona, ed anche con la group by, solo che dopo non è possible usare ordine.posti per sommare, perchè i valori duplicati sono stati eliminati dalla distinct o raggruppati dalla group by


IMHO la query giusta è

Codice:
SELECT SUM(Ordine.posti), Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
WHERE Ordine.data=<input>
GROUP BY portate.descrizione,piatti.descrizione
A che ti serve Ordine.nome? Cosa c'è scritto dentro?
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 16:04   #17
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Scusa ma nella tabella ordine cosa c'è dentro?

Codice:
Tabella Ordine

id = chiave tabella?
nome = ???
posti = numero di portate ordinate?
data = data ordine

Spiegami un po', perchè altrimenti mi riesce difficile cosa c'è dentro
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 16:06   #18
DvL^Nemo
Senior Member
 
L'Avatar di DvL^Nemo
 
Iscritto dal: Nov 2001
Città: 100 metri dal mare
Messaggi: 4866
In effetti quell'ordine.nome e' strano, la mia "preoccupazione" e' che sia strutturato male il DB, perche' se il group by va utilizzato in una certe maniera c'e' un motivo..
Ciao !
DvL^Nemo è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 16:09   #19
Duncan
Senior Member
 
L'Avatar di Duncan
 
Iscritto dal: Nov 1999
Città: Sesto Fiorentino, Firenze
Messaggi: 8444
Quote:
Originariamente inviato da DvL^Nemo
In effetti quell'ordine.nome e' strano, la mia "preoccupazione" e' che sia strutturato male il DB, perche' se il group by va utilizzato in una certe maniera c'e' un motivo..
Ciao !

Infatti è anche la mia paura, se devi sommare Ordine.posti, se il DB è corretto i casi sono due
  1. Non di interessa nulla di Ordine.Nome
  2. O lo metti in Group by e select
__________________
Nikon user
Le mie foto su Flickr
Duncan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2006, 16:17   #20
vicus
Member
 
Iscritto dal: Oct 2004
Città: Rossano Veneto
Messaggi: 110
Allora
tabella ordini:
nome: chi ha fatto l'ordine
posti: per quante persone
data: per quando ha prenotato

A me serve sapere per quante persone e in quali ordini serve un piatto di un dato giorno.

Codice:
SELECT Ordine.nome, Ordine.posti, Piatti.descrizione, Portate.descrizione
FROM 'le quattro tabelle unite col INNER JOIN sul codice'
GROUP BY portate.descrizione,piatti.descrizione 
HAVING Ordine.data=<input>
Questa in Access funziona.

Sono uno studente e questo è il primo DB serio che faccio quindi è possibile che sia fatto male daltronde lo rifatto solo 2 volte.
__________________
vicus è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Spunta un engineering sample di Ryzen 9 ...
iPhone 18 Pro, alcuni utenti segnalano s...
Android Auto: Gemini ascolta la domanda ...
OpenAI avvisa oltre 100 organizzazioni p...
Dall'AI alla SI: il rebranding di Trump ...
0patch offrirà supporto esteso pe...
Sudo sembra un iPod, ma nasconde una car...
Meta, OpenAI e Google rifanno OpenClaw: ...
Pixel 10a: Google alza il prezzo di 100 ...
5 sconti TOP e una super city e-bike per...
Speciale Sonoff per utenti Prime: 4 valv...
Meno ghiaccio, meno acqua: il dato che c...
SBS annuncia il lancio degli accessori P...
Speciale Smart TV 65 e 75 pollici in off...
GL.iNet Beryl 7 a 107,19€: router Wi-Fi ...
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: 13:51.


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