Programmatore Freelance, Programmatore MySQL, Programmatore PHP, Esperto in Database MySQL e alla creazione di Query SQL, Sviluppo di Applicazioni Web, Realizzazione Siti Internet dinamici.

Selezionare più righe da una tabella utilizzando MySQL.



Questa settimana, durante la stesura di un progetto come Programmatore PHP Freelance, mi sono imbattuto nella necessità di selezionare più righe con una Query utilizzando MySQL.
Visto che la cosa può non risultare intuitiva, ho deciso di scrivere una breve Guida MySQL per spiegare come poter selezionare diverse righe della stessa tabella e raggrupparle per un determinato valore.

Esempio Pratico:
Supponiamo di avere una tabella padri e una tabella figli:

Padri
id   nome    paese   lavoro
1    Luigi   Roma    Impiegato
2    Michele Milano  Programmatore
3    Antonio Roma    Operaio
4    Roberto Napoli  Impiegato

Figli
id   idPadre   nome
1       1      Giulio
2       1      Aldo
3       2      Lucilla
4       3      Giulio
5       4      Aristide
6       4      Aldo
7       3      Paolo
8       3      Aldo

Supponiamo di volere selezionare dal nostro database MySQL tutti gli id padre di quei padri che abbiano un figlio di nome Giulio e un figlio di nome Aldo. A occhio potrebbe risultare molto facile, ma come tramutare il nostro pensiero in codice SQL?
La soluzione che ho studiato e implementato è la seguente, ma ovviamente nulla vieta di trovare soluzioni alternative (e magari segnalarle in modo da inserire il questo articolo).

Procediamo con una prima tappa e proviamo a selezionare prima tutti gli utenti che hanno un figlio di nome Aldo:

SELECT idPadre, GROUP_CONCAT( nome
ORDER BY nome ) AS listaFigli
FROM figli
GROUP BY idPadre
HAVING find_in_set( 'Aldo', listaFigli );

Otterremo come risultati:

idPadre listaFigli
1       Aldo,Giulio
2       Aldo
3       Aldo,Giulio,Paolo

Ma passiamo in dettaglio a spiegare la query MySQL che utilizza qualche specifica non utilizzata da molti Programmatori alle prime esperienze:
Con la specifica GROUP_CONCAT( nome ORDER BY nome ) ordiniamo tutti i nomi in ordine alfabetico relativi all’idPadre, tale array presenta come separatore di default la virgola, ma è possibile aggiungere un parametro che ne specifica uno diverso.
Con GROUP BY raggruppiamo per idPadre e aggiungiamo la clausola essenziale cioè che abbiano (HAVING) il valore aldo nella listaFigli e in questo caso abbiamo utilizzato l’interessantissima funzione MySQL find_in_set che ricerca un valore in un array.
E intuitivo da capire per un Programmatore MySQL Esperto o meno esperto che basta modificare questa query aggiungendo una nuova clausola find_in_set per ottenere ciò di cui abbiamo bisogno:

SELECT id_padre, GROUP_CONCAT( nome
ORDER BY nome ) AS listanomi
FROM figli
GROUP BY id_Padre
HAVING find_in_set( 'Aldo', listanomi )
AND find_in_set( 'Giulio', listanomi )

e così via fino a raggiungere la selezione desiderata.
Spero di essere stato utile con questa selezione di più righe con MySql. Più avanti potrei presentare un piccolo script nella sezione Programmatore PHP che possa rendere dinamico da codice PHP l’incremento o il decremento del filtro find_in_set.

PER ULTERIORI INFORMAZIONI:

Daniele Tabacco
Programmatore PHP | Web Developer | Consulente Web e SEO

PHP - MySql - AJAX - HTML5 - JAVASCRIPT - CSS - JSON/XML - JQuery
WebApps, Applicazioni, Realizzazione Siti Mobile per iPhone e Android
Programmatore PHP - Consulente Web Marketing Napoli, Roma, Milano, Firenze.
Tel.+39 329.11.73.918
email: daniele.tabacco[at]gmail.com
skype: daniele.tabacco

Il tuo nome (richiesto)

La tua email (richiesto)

Oggetto

Il tuo messaggio

 


POTREBBE INTERESSARTI ANCHE:
Script per la creazione di uno script javascript che permetta la realizzazione di una Select Dinamica.
Sei un Programmatore PHP? Vuoi eseguire una copia del tuo sito dinamico realizzato con PHP su un CD o su un supporto USB? Questo articolo ti spiegherà cosa devi fare.
Core Plus è un CMS a Misura di utente, completamente integrabile ad ogni grafica, che consente lo Sviluppo di Siti Internet Dinamici frutto della mia esperienza di Programmatore PHP Freelance
Integrare elementi Social Media nel proprio sito è d'importanza assoluta nei progetti web, per aumentare la visibilità del proprio progetto, affidati ad un Programmatore PHP e Consulente Web Marketing esperto di Social Media
Sviluppo Applicazioni iPhone e WebApps per iPhone per portare il tuo sito su dispositivi Apple iPhone, e rendere i tuoi contenuti interattivi e consultabili ovunque.


buzzoole code
Leggi altro:
Inserire i commenti di una Bacheca Facebook sul tuo sito

Come sto scrivendo spesso nei miei ultimi articoli sia nella sezione Consulenza Web che Programmatore PHP, sono sempre più convinto...

Chiudi