Pagina 1 di 1

[MySQL] Interrogazioni nidificate???

Inviato: sabato 19 aprile 2014, 19:33
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)

Re: [MySQL] Interrogazioni nidificate???

Inviato: domenica 20 aprile 2014, 0:37
da Zoff

Re: [MySQL] Interrogazioni nidificate???

Inviato: domenica 20 aprile 2014, 20:05
da luciano9429

Re: [MySQL] Interrogazioni nidificate???

Inviato: lunedì 21 aprile 2014, 22:45
da Zoff
Max è una funzione di raggruppamento, la clausola where richiede una condizione booleana

Re: [MySQL] Interrogazioni nidificate???

Inviato: martedì 22 aprile 2014, 13:56
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

Re: [MySQL] Interrogazioni nidificate???

Inviato: martedì 22 aprile 2014, 14:01
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.

Re: [MySQL] Interrogazioni nidificate???

Inviato: martedì 22 aprile 2014, 14:19
da mx92
Con un inner join li prendi tutti

Re: [MySQL] Interrogazioni nidificate???

Inviato: martedì 22 aprile 2014, 14:24
da Zoff
Anche con la IN come ho indicato sopra.

Con ORDER e LIMIT sei enormemente più veloce