[MySQL] Interrogazioni nidificate???

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
luciano9429
Prode Principiante
Messaggi: 107
Iscrizione: martedì 24 dicembre 2013, 11:40
Distribuzione: ubuntu 12.04 lts 64 bit

[MySQL] Interrogazioni nidificate???

Messaggio da luciano9429 »

estrarre il dipartimento dell'impiegato che guadagna lo stipendio massimo.

Codice: Seleziona tutto

select Dipart
from Impiegato
where Stipendio >= all
                             (select Stipendio 
                                           from Impiegato)
si può scrivere anche cosi?

Codice: Seleziona tutto

select Dipart
from Impiegato
where max(stipendio)
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [MySQL] Interrogazioni nidificate???

Messaggio da Zoff »

Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
luciano9429
Prode Principiante
Messaggi: 107
Iscrizione: martedì 24 dicembre 2013, 11:40
Distribuzione: ubuntu 12.04 lts 64 bit

Re: [MySQL] Interrogazioni nidificate???

Messaggio da luciano9429 »

Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [MySQL] Interrogazioni nidificate???

Messaggio da Zoff »

Max è una funzione di raggruppamento, la clausola where richiede una condizione booleana
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
mx92
Prode Principiante
Messaggi: 218
Iscrizione: domenica 7 ottobre 2007, 9:08
Località: Molfetta (Ba)

Re: [MySQL] Interrogazioni nidificate???

Messaggio da mx92 »

Potresti farla così:

Codice: Seleziona tutto

SELECT Dipertimento
FROM Impiegato inner join (

SELECT idImpiegato,  Max(Stipendio)
FROM Impiegato
GROUP BY idImpiegato) as stipendioMax on impiegato.idImpiegato = stipendioMax.idImpiegato;
oppure se vuoi fare una cosa ordinata puoi creare una vista:

Codice: Seleziona tutto

CREATE VIEW stipendioMax AS
SELECT idImpiegato,  Max(Stipendio)
FROM Impiegato
GROUP BY idImpiegato;
e poi dai

Codice: Seleziona tutto

SELECT Dipertimento 
FROM Impiegato inner join stipendioMax  on impiegato.idImpiegato = stipendioMax.idImpiegato;

Non ho modo di provarla ma dovrebbe andare bene
Ultima modifica di mx92 il martedì 22 aprile 2014, 14:18, modificato 1 volta in totale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [MySQL] Interrogazioni nidificate???

Messaggio da Zoff »

Beh di modi ce ne sono mille.
Ad esempio:

Codice: Seleziona tutto

SELECT Dipartimento FROM Impiegato WHERE Stipendio IN SELECT MAX(Stipendio) FROM Impiegato
L'unico senza usare subquery è:

Codice: Seleziona tutto

SELECT Dipartimento FROM Impiegato ORDER BY Stipendio DESC LIMIT 1
L'unico difetto è che se piu' impiegati hanno lo stesso stipendio massimo ne prendi solo uno.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
mx92
Prode Principiante
Messaggi: 218
Iscrizione: domenica 7 ottobre 2007, 9:08
Località: Molfetta (Ba)

Re: [MySQL] Interrogazioni nidificate???

Messaggio da mx92 »

Con un inner join li prendi tutti
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [MySQL] Interrogazioni nidificate???

Messaggio da Zoff »

Anche con la IN come ho indicato sopra.

Con ORDER e LIMIT sei enormemente più veloce
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti