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.
Scritto da: Daniele Tabacco | Categoria: Programmatore MySQL|commenti Commenti: (0)

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.

Commenti:
.Nessun commento Presente.









Captcha
Copia i caratteri che vedi sopra:

Tags: | torna su


linkedIn


Contattami su Skype:
Il mio stato

Archivio Articoli:
Semplice Script Base per Realizzare un semplice carrello elettronico con Javascript
Perchè creare la Pagina Facebook della propria attività
Leggere una directory con PHP
Scegliere come Consulente un Programmatore PHP Freelance
Leggere XML con PHP
Php su Mac Apple
Selezionare più righe da una tabella utilizzando MySQL.
Status e URL Valide con PHP 5 e get_headers();
Guida alle Join di MySQL
Programmatore PHP e Programmazione ad Oggetti.
Un semplice esempio di AJAX
Creazione una Select Dinamica con Javascript
Scegliere un CMS Open Source per il proprio progetto.
Realizzare un Codice Captcha
Perchè Scegliere PHP? Perchè Programmatore PHP?
Restyling di un Applicazione o Portale Web con PHP

Cerchi un Programmatore PHP con esperienza consolidata, già molte aziende a Napoli, Milano, Roma e Ferrara si sono affidate a me. Contattami per una Consulenza Gratuita, per Realizzare Applicazioni Web o Sviluppare Siti Internet e Creare Portali Dinamici.

Risorse utili per PHP:

Partners & Consigliati:

NGMWeb Hosting & Servizi

MioMotore Directory Gratis

ADServer Gestione Banner


Nuove Collaborazioni:

cocreando
 
Daniele Tabacco - Questo sito e' interamente realizzato da me secondo gli standard del W3C - css valido w3c css valido xhtml