ho queste tabelle in MYSQL
ALBUM (ID_album, titolo, data creazione,visibilita)
FOTO (percorso, album,nome)
con vincolo int ref tra ID_ALBUM e percorso
dovrei estrarre l album che contiene piu foto.
io ho fatto cosi come segue e la query mi sembra che torni dai risultati che dà.
/*OP18 ALBUM CHE CONTIENE PIU FOTO*/
SELECT ALBUM,TITOLO,MAX(NUMEROFOTO)
FROM (
SELECT ALBUM,TITOLO,COUNT(*) AS NUMEROFOTO
FROM ALBUM JOIN FOTO ON ALBUM=ID_ALBUM
GROUP BY ALBUM
ORDER BY COUNT(*) DESC
) AS NUMEROFOTODESC
DUBBI:
1. Se per esempio ci sono tre album che hanno lo stesso numero di foto e risulta il massimo mi restituisce solo quello che prende per primo.
Mi potrebbe anche andar bene , ma credo ci sia un metodo piu intelligente di farlo.
2 . Non sono sicuro dell eleganza di mettere la tabella derivata con l alias. Ci sarebbe un modo per evitarla?
Altra domanda che allego in questa per non aprire un altro messaggio, esiste un modo per evitare gli join? Mi spiego ho visto gli esami orali del corso di basi dati e il prof chiedeva (ma forse ho sbagliato io a interpretare la domanda) quale altro modo esisteva per diminuire l uso massiccio di join in un progetto.
grazie in anticipo per le risposte.

Rispondi quotando