|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2007
Messaggi: 5
|
[SQL] Interrogazione, aiutatemi
Salve a tutti, sto seguendo un corso di Basi di Dati e, ahimè, non ci capisco granché!
Devo fare questa esercitazione: Sono date le relazioni seguenti (le chiavi primarie sono sottolineate): PITTORE(CodP, NomeP, DataNascita, Nazione) QUADRO(CodQ, Titolo, CodP) ESPOSIZIONE(CodQ, DataInizio, DataFine, NomeGalleria) Per ogni nazione, visualizzare il codice del pittore che ha dipinto il numero massimo di quadri e il relativo numero di quadri dipinti. La soluzione da me proposta è: SELECT P.CodP, COUNT(Q.CodQ) AS NumQ, P.Nazione FROM Pittore P, Quadro Q WHERE P.CodP=Q.CodP GROUP BY CodP, Nazione HAVING MAX(NumQ) Ho provato a farla girare caricando una tabella di prova su un dominio di mia proprietà, ma non funziona! Mi dice che il campo NumQ non esiste ... Idee? Grazie per l'aiuto |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Oct 2007
Messaggi: 5
|
:-( Non c'è nessuno che può aiutarmi a capire questo errore????
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Oct 2007
Messaggi: 5
|
Scusate se insisto, ma se veramente non c'è nessuno qua in grado di spiegarmi questa cosa, come faccio io che sto ancora seguendo il corso per imparare queste cose???
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ciao
Non sono un esperto ma ad occhio direi che: 1) NumQ non è settata come variabile temporanea e non basta 'AS' per renderla tale se non per il nome della colonna in visualizzazione. In base al tipo di db che stai usando dovresti vedere cosa utilizzare per creare una variabile temporanea; generalmente è : set @nomeVariabile := valore. Ad ogni modo, accertati prima che il risultato sia quello che vorresti semplicemente con: Codice:
SELECT P.CodP, COUNT(Q.CodQ) AS NumQ, P.Nazione FROM Pittore P, Quadro Q WHERE P.CodP=Q.CodP GROUP BY CodP, Nazione HAVING MAX(Q.CodQ)
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Sep 2006
Città: ~
Messaggi: 146
|
Quote:
Codice:
CREATE VIEW pittori_numquadri AS SELECT p.Nazione AS Nazione, p.CodP AS CodP, count(*) AS numQ FROM PITTORE p INNER JOIN QUADRO q ON q.CodP = p.CodP GROUP BY p.Nazione, p.CodP; CREATE VIEW nazioni_maxquadri AS SELECT p.Nazione AS Nazione, max(numQ) AS maxQ FROM pittori_numquadri GROUP BY p.Nazione; SELECT DISTINCT Nazione, CodP, numQ FROM pittori_numquadri p INNER JOIN nazioni_maxquadri n ON p.Nazione = n.Nazione WHERE p.numQ = n.maxQ;
__________________
Computers are like conditioned air: they work fine 'till you open windows.
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:41.




















