Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI è l'appuntamento annuale con il quale l'azienda americana mostra quelle che sono le proprie novità dal versante datacenter. Tra piattaforma Helios, GPU Instinct MI455X e processori EPYC di sesta generazione tutto quello che serve per processare l'IA sempre più complessa ed esigente
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
BOOX Go 6 Gen II porta per la prima volta il supporto allo stilo su un e-reader da 6 pollici, affiancando 3 GB di RAM al collaudato Snapdragon 665 e un design rivisto con scocca posteriore a costolature. Su carta la proposta è interessante, ma Android 11 fuori supporto, l'assenza di un alloggiamento per il pennino e un'autonomia ridotta rispetto agli e-reader tradizionali sono i compromessi da accettare
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-11-2007, 13:14   #1
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Domandona SQL

Qualcuno mi sa spiegare perchè la seguente parte di query potrebbe causare risultati scorretti?
....
Select count(*)
from prenotazioni
group by data
....
Mi è stata corretta nell'esame di Basi di Dati perchè pare che nella target list ci dovrebbe essere data, ma questa cosa mi suona nuova dato che comunque nella select ci deve sempre essere un sottinsieme degli attributi del group.
In particolare poi ne devo fare una media e chi me l'ha corretta sostiene che si potrebbero avere il raggruppamento di righe distinte avente lo stesso valore di count(*)... boh
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:20   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2791
Non ho capito molto, forse se posti il testo dell'esercizio e la struttura della tabella è + chiaro.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:21   #3
manu@2986
Senior Member
 
L'Avatar di manu@2986
 
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
"nella select ci deve sempre essere un sottinsieme degli attributi del group."

Forse non ho capito bene, ma se è come dici tu ti sei risposto da solo, nel select non c'è un sottoinsieme degli attributi del group by, anzi, è il contrario.

Comunque, a parte questo, mi pare di ricordare che quando facevo le interrogazioni con access nel campo select dovevo specificare sempre lo stesso attributo (o gli stessi) che usavo nella clausola group by, e usando * mi dava errore.

Comunque potresti postare il testo esatto dell'interrogazione?
manu@2986 è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:25   #4
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da manu@2986 Guarda i messaggi
"nella select ci deve sempre essere un sottinsieme degli attributi del group."

Forse non ho capito bene, ma se è come dici tu ti sei risposto da solo, nel select non c'è un sottoinsieme degli attributi del group by, anzi, è il contrario.

Comunque, a parte questo, mi pare di ricordare che quando facevo le interrogazioni con access nel campo select dovevo specificare sempre lo stesso attributo (o gli stessi) che usavo nella clausola group by, e usando * mi dava errore.

Comunque potresti postare il testo esatto dell'interrogazione?
guarda che nessun attributo è un sottoinsime di quelli del group (il sottoinsieme vuoto intendo)

Ultima modifica di nothinghr : 20-11-2007 alle 13:32.
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:27   #5
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Non ho capito molto, forse se posti il testo dell'esercizio e la struttura della tabella è + chiaro.
il testo non l'ho sottomano vado a memoria, comunque la query era banale, qui si tratta di un problema di correttezza dei risultati a dire del prof. a causa della sintassi che ho sopra riportato

Comunque cerco di essere piu' chiaro: ho una tabella in cui ho delle prenotazioni in cui il codice è la chiave li raggruppo per data, li conto e poi nella select principale faccio avg(risultato_vista), impostando la vista come sopra. Il problema a quanto pare è sottile infatti la query è sintatticamente corretta
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:40   #6
manu@2986
Senior Member
 
L'Avatar di manu@2986
 
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
Direttamente dal mio libro di basi di dati:

Ogni colonna che appare nella lista-select deve anche apparire nella lista-gruppo. La ragione è che ogni riga del risultato dell'interrogazione corrisponde a un gruppo, che è una collezione di righe aventi, nelle colonne menzionate in lista-gruppo, gli stessi valori. In generale, se una colonna appare nella lista-select ma non nella lista-gruppo, possono esserci diverse righe all'interno di un gruppo che in quella colonna hanno valori diversi, e non è chiaro quale di questi valori dovrebbe essere assegnato, nella risposta, alla colonna stessa.
manu@2986 è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:44   #7
lattone
Member
 
L'Avatar di lattone
 
Iscritto dal: Sep 2001
Città: pisa
Messaggi: 70
Tu hai chiesto al compilatore di raggruppare per data una tabella in cui non hai selezionato nessun attributo data.
In questi casi compilatori e professori si comportano alla stessa maniera
lattone è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:44   #8
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da manu@2986 Guarda i messaggi
Direttamente dal mio libro di basi di dati:

Ogni colonna che appare nella lista-select deve anche apparire nella lista-gruppo. La ragione è che ogni riga del risultato dell'interrogazione corrisponde a un gruppo, che è una collezione di righe aventi, nelle colonne menzionate in lista-gruppo, gli stessi valori. In generale, se una colonna appare nella lista-select ma non nella lista-gruppo, possono esserci diverse righe all'interno di un gruppo che in quella colonna hanno valori diversi, e non è chiaro quale di questi valori dovrebbe essere assegnato, nella risposta, alla colonna stessa.
Si questa è una cosa arcinota, ma lo capisci che qui è il problema inverso? Ovvero è anche vero il contrario, cioè che l'attributo che appare nel group deve essere nella select? Io non credo, o almeno è quello che ho trovato in esercizi presi da varie facoltà. Mi sono spiegato ora?
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:47   #9
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da lattone Guarda i messaggi
Tu hai chiesto al compilatore di raggruppare per data una tabella in cui non hai selezionato nessun attributo data.
In questi casi compilatori e professori si comportano alla stessa maniera
Che discorso è, l'attributo per cui raggruppi non deve essere necessariamente nella select, è vero il contrario

Ultima modifica di nothinghr : 20-11-2007 alle 13:53.
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:54   #10
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
Iscritto dal: Sep 2007
Messaggi: 754
The SQL92 standard required that any column referred to in the "group by" must also be specified in the "select" list (among other restrictions).

Secondo lo standard i campi della group by sono richiesti nella selct list
__________________
http://www.tevigroup.it/
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 13:57   #11
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da isAlreadyInUse Guarda i messaggi
The SQL92 standard required that any column referred to in the "group by" must also be specified in the "select" list (among other restrictions).

Secondo lo standard i campi della group by sono richiesti nella selct list
Ecco, standard del '92 se non erro quindi? Mi domando soltanto perchè molti libri di testo parlano apertamente di sottoinsieme, e molti prof. svolgono query in quel senso.

Quello che segue è preso ad esempio dai lucidi dell'università di Parma:

In ogni interrogazione che usa group by, argomento della select (escludendo l’operatore aggregato) può essere solo un sottoinsieme degli attributi usati nella clausola group by.

il che cozza con quell oche dice lo standard che hai postato

Ultima modifica di nothinghr : 20-11-2007 alle 14:00.
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:00   #12
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
Iscritto dal: Sep 2007
Messaggi: 754
Magari serve a qualcuno
Codice:
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
__________________
http://www.tevigroup.it/
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:04   #13
manu@2986
Senior Member
 
L'Avatar di manu@2986
 
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
Quote:
Originariamente inviato da nothinghr Guarda i messaggi
Si questa è una cosa arcinota, ma lo capisci che qui è il problema inverso? Ovvero è anche vero il contrario, cioè che l'attributo che appare nel group deve essere nella select? Io non credo, o almeno è quello che ho trovato in esercizi presi da varie facoltà. Mi sono spiegato ora?
" In generale, se una colonna appare nella lista-select ma non nella lista-gruppo, possono esserci diverse righe all'interno di un gruppo che in quella colonna hanno valori diversi, e non è chiaro quale di questi valori dovrebbe essere assegnato, nella risposta, alla colonna stessa."

Ora, tu nella select hai usato * che ti prende tutti gli attributi della tabella, e nel group by hai usato solo data, quindi siamo nel caso che ho scritto qua sopra.
manu@2986 è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:06   #14
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da isAlreadyInUse Guarda i messaggi
Magari serve a qualcuno
Codice:
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
credo proprio che quella limitazione sia stata superata nelle versioni successive, ormai la domanda è, va bene non richiamarne alcuno, e vedo che nei forum ricorre questo dubbio, ho postato il problema perchè magari qualcuno si è già posto la domanda e a me serve solo una base certa per protestare

Ultima modifica di nothinghr : 20-11-2007 alle 14:08.
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:06   #15
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da manu@2986 Guarda i messaggi
" In generale, se una colonna appare nella lista-select ma non nella lista-gruppo, possono esserci diverse righe all'interno di un gruppo che in quella colonna hanno valori diversi, e non è chiaro quale di questi valori dovrebbe essere assegnato, nella risposta, alla colonna stessa."

Ora, tu nella select hai usato * che ti prende tutti gli attributi della tabella, e nel group by hai usato solo data, quindi siamo nel caso che ho scritto qua sopra.
io ho usato count(*) che è tutta un'altra cosa
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:13   #16
lattone
Member
 
L'Avatar di lattone
 
Iscritto dal: Sep 2001
Città: pisa
Messaggi: 70
Prova ad disegnare l'albero di interrogazione (o come si chiama) della tua query.

{ groupby(data) }
|
{ select{count() }
|
{ from(prenotazioni) }
da leggere dal basso verso l'alto

group by lavora sul risultato della select
lattone è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:19   #17
manu@2986
Senior Member
 
L'Avatar di manu@2986
 
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
ok allora mettiamola così, cosa ti serve portarti dietro tutti gli attributi della tabella per poi calcolarne la media, non ti basta raggruppare per la data? Ammesso che sia giusto come dici tu, anche se non ne sono convinto, che motivo c'è di fare count(*)? nessuno.
manu@2986 è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:20   #18
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da manu@2986 Guarda i messaggi
ok allora mettiamola così, cosa ti serve portarti dietro tutti gli attributi della tabella per poi calcolarne la media, non ti basta raggruppare per la data? Ammesso che sia giusto come dici tu, anche se non ne sono convinto, che motivo c'è di fare count(*)? nessuno.
ah no? e come le conti le prenotazioni in un determinato giorno?

certo puoi fare anche count(cod) ma è una scrittura simmetrica in questo caso

Ultima modifica di nothinghr : 20-11-2007 alle 14:25.
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:24   #19
nothinghr
Senior Member
 
L'Avatar di nothinghr
 
Iscritto dal: Mar 2002
Città: Firenze
Messaggi: 1091
Quote:
Originariamente inviato da lattone Guarda i messaggi
Prova ad disegnare l'albero di interrogazione (o come si chiama) della tua query.

{ groupby(data) }
|
{ select{count() }
|
{ from(prenotazioni) }
da leggere dal basso verso l'alto

group by lavora sul risultato della select
Forse non ho capito cosa intendi. Secondo il tuo ragionamento se faccio
select camera, count(*)
from prenotazioni
group by data, camera

non funziona? invece funziona eccome, pero' magari ho capito male cosa intendi...
nothinghr è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2007, 14:35   #20
manu@2986
Senior Member
 
L'Avatar di manu@2986
 
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
Quote:
Originariamente inviato da nothinghr Guarda i messaggi
ah no? e come le conti le prenotazioni in un determinato giorno?

certo puoi fare anche count(cod) ma è una scrittura simmetrica in questo caso
Appunto quello che intendevo, quindi se avessi fatto così il prof avrebbe detto che era sbagliato, ma, in sostanza, come la vuole il prof sta interrogazione?
manu@2986 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Batterie a terra per Varta, bancarotta v...
Elon Musk: l'intelligenza artificiale su...
Ryzen 7 9800HX3D: il miglior processore ...
Google porta Gemini Live sui vecchissimi...
Corsair Platform:4 in offerta: la scriva...
Il creatore di Disagea sull'addio dei gi...
Fastweb + Vodafone entra nello SmartCity...
AI Act europeo: dal 2 agosto partono i n...
Da 1,3 a 10 miliardi in due mesi: chi è ...
Schede video RTX: NVIDIA comunica nuovi ...
GTA 6, i 60 fps stabili potrebbero esser...
Questa Smart TV QLED da 40 pollici con H...
Ring in sconto fino al 57%: videocitofon...
Pubblicità su Windows con i monit...
Azioni sul PC e coding solo chiedendo: O...
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: 16:45.


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