- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- JOIN Query MySQL
-
JOIN Query MySQL
Buona sera a tutti GTiani,
mi rivolgo a voi perchè nonostante le innumerevoli spiegazioni trovate non sono arrivato ad un risultato funzionantex:x
Ciò di cui ho bisogno è di costruire una query per la sezione "Blog" del mio sito web che mi consenta di estrarre informazioni da più tabelle (senza effettuare, quindi, più query).
Credo che il metodo più efficiente siano le JOIN QUERY, tuttavia non riesco ad effettuarle.
[CENTER]LE TABELLECATEGORIE[/CENTER]
[TABLE="class: grid, width: 500, align: center"][TD]cat_id[/TD]
[TD]cat_title[/TD]
[TD]cat_desc[/TD]
[/TR][TD]ID della categoria[/TD]
[TD]Il mio titolo[/TD]
[TD]La mia descrizione[/TD]
[/TR]
[/TABLE]
[CENTER]**
POST**[/CENTER]
[TABLE="class: grid, width: 500, align: center"][TD]post_id[/TD]
[TD]post_title[/TD]
[TD]post_text[/TD]
[TD]post_aut[/TD]
[TD]post_cat[/TD]
[/TR][TD]ID del post[/TD]
[TD]Il mio titolo[/TD]
[TD]Il contenuto del post[/TD]
[TD]ID dell'autore[/TD]
[TD]ID della categoria[/TD]
[/TR]
[/TABLE]
[CENTER]
AUTORI[/CENTER]
[TABLE="class: grid, width: 500, align: center"][TD]aut_id[/TD]
[TD]aut_first_name[/TD]
[TD]aut_last_name[/TD]
[TD]aut_email[/TD]
[/TR][TD]ID dell'autore[/TD]
[TD]Nome autore[/TD]
[TD]Cognome autore[/TD]
[TD]Email dell'autore[/TD]
[/TR]
[/TABLE]Quello che ho bisogno è di ottenere tutti questi dati in una sola query cosi da poterli mostrare nella schermata di riepilogo dei post con il classico [PHP]
// Inizializzo la variabile
$lista_post = '';// Estraggo i dati dalla query e genero l'HTML
while($row = mysqli_fetch_array($result)) {
$lista_post .= '<li>Titolo: '.$row["post_title"].', Autore: '.$row["aut_first_name"].', Categoria di riferimento: '.$row["post_cat"].'</li>';
}// Mostro l'HTML generato
echo $list_post;[/PHP]
Qualcuno può aiutarmi? Grazie mille!
Un saluto,
Francesco
-
Ciao Francesco,
prova così o qualcosa di simile (scusa ma non posso testare il codice adesso, quindi vado ad occhio):SELECT * FROM POST JOIN CATEGORIE ON POST.post_cat = CATEGORIE.cat_id JOIN AUTORI ON POST.post_aut = AUTORI.aut_id
Fammi sapere.
Saluti
-
Ciao Shad!
Grazie mille della risposta! Ho utilizzato la tua formulazione ed ha funzionato alla perfezione. Di seguito (lo scrivo per eventuali altri interessati) il codice che ho utilizzato:[PHP]
//connect:
$link = mysqli_connect($host, $user, $password, $db) or die("Errore di connessione al database: <br>" . mysqli_error($link));//consultation:
$query = "
SELECT *
FROM POST
JOIN CATEGORIE
ON POST.ID_CATEGORIA= CATEGORIE.ID_CATEGORIA
JOIN AUTORI
ON POST.ID_AUTORE= AUTORI.ID_AUTORE
ORDER BY POST.DATA_CREAZIONE DESC"
or die("Errore nella query: <br>" . mysqli_error($link));//execute the query.
$result = $link->query($query) or die("Errore nell'esequzione della query: <br>" . mysqli_error($link)); ;// create empty var
$lista_post = '';// fill created var with HTML
while($row = mysqli_fetch_array($result)) {
$lista_post .= '<li>Titolo: '.$row["post_title"].', Autore: '.$row["aut_first_name"].', Categoria di riferimento: '.$row["post_cat"].'</li>';
}// display HTML
echo $lista_post;[/PHP]