[PHP] Aiuto su inner join

migo80

Utente Attivo
25 Apr 2013
243
3
18
Un saluto a tutti, sono nuovamente qui per chiedere l'ennesimo aiuto.
Avrei bisogno di qualcuno che mi faccia vedere come si le inner join tra 12 tabelle per poi selezionare i loro record.
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Avrei bisogno di qualcuno che mi faccia vedere come si le inner join tra 12 tabelle per poi selezionare i loro record.
Come hai messo i dati nelle 12 tabelle?
Codice:
SELECT Tabella1.* , Tabella2.*,Tabella3.*
FROM Tabella1
INNER JOIN Tabella2
    ON Tabella2.ref_id = Tabella1.id
 INNER JOIN Tabella3
    ON Tabella3.ref_id = Tabella1.id
INNER JOIN Tabella4
    ON Tabella4.ref_id = Tabella1.id
Senza sapere nulla ho ipotizzato che le 11 tabelle siano referenziate con la prima attraverso ref_id.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
costruisci la query facendo la join sulle colonne comuni delle tabelle
quando l'hai ben provata e sei sicuro del risultato,
ti suggerisco di creare una "view" nel db in modo da gestire l'insieme come un'unica tabella (penso che mysql supporti le view...)
puoi vedere degli esempi nel link
https://www.w3schools.com/sql/sql_view.asp

se poi vuoi avere una visione delle possibili join, nel link trovi la rappresentazione grafica
https://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpg
 
Ultima modifica:

migo80

Utente Attivo
25 Apr 2013
243
3
18
Un grazie per l'aiuto....mi correggo sul numero delle tabelle che non sono 12 ma 8 :D
posto la select che ho scritto ma ancora non l'ho provata, sarà giusta?

PHP:
$id_cliente = $_SESSION['id_cliente'];
    
    $result = $mysqli->query("SELECT * FROM anagrafica AS a
    LEFT JOIN stato_salute AS ss ON ss.cliente_id = a.$id_cliente
    LEFT JOIN abitudini_alimentari AS aa ON aa.cliente_id = a.$id_cliente
    LEFT JOIN attivita_fisica AS af ON af.cliente_id = a.$id_cliente
    LEFT JOIN piani_alimentari_assegnati AS pa ON pa.cliente_id = a.$id_cliente
    LEFT JOIN stile_vita_dieta AS sv ON sv.cliente_id = a.$id_cliente
    LEFT JOIN integratori_assegnati AS ia ON ia.cliente_id = a.$id_cliente
    LEFT JOIN carrello_spesa AS cs ON cs.cliente_id = a.$id_cliente
    ");
    $mysqli->set_charset("utf8");

     while($row = $result->fetch_assoc()){
        echo $row."<br>";         
     }

Riguardo le view non ne ero a conoscenza, darò uno sguardo ai due link e ti farò sapere se riuscirò nell'impresa...
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
Corretta come l'esempio suggerito da Macus_adi funzionaaaaaa..

PHP:
$id_cliente = $_SESSION['id_cliente'];
   
    $result = $mysqli->query("SELECT anagrafica.*,stato_salute.*, abitudini_alimentari.*, attivita_fisica.*, piani_alimentari_assegnati.*,
    stile_vita_dieta.*, integratori_assegnati.*, carrello_spesa.*  FROM anagrafica 
    INNER JOIN stato_salute 
    ON stato_salute.cliente_id = anagrafica.id_cliente=$id_cliente
    INNER JOIN abitudini_alimentari 
    ON abitudini_alimentari.cliente_id = anagrafica.id_cliente=$id_cliente
    INNER JOIN attivita_fisica
    ON attivita_fisica.cliente_id = anagrafica.id_cliente=$id_cliente
    INNER JOIN piani_alimentari_assegnati 
    ON piani_alimentari_assegnati.cliente_id = anagrafica.id_cliente=$id_cliente
    INNER JOIN stile_vita_dieta 
    ON stile_vita_dieta.cliente_id = anagrafica.id_cliente=$id_cliente
    INNER JOIN integratori_assegnati 
    ON integratori_assegnati.cliente_id = anagrafica.id_cliente=$id_cliente
    INNER JOIN carrello_spesa 
    ON carrello_spesa.cliente_id = anagrafica.id_cliente=$id_cliente
    ");
    $mysqli->set_charset("utf8");

    while($row = $result->fetch_assoc()){
        echo $row['cliente_id']."<br>";         
    }

ma c'è un modo per evitare di scrivere negli echo i nomi dei campi dato che ne ho tanti?
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Fai un mapping dei dati all'interno di un array per effettuare l'iterazione in automatico.
In array_mappa_dati inserisci i campi che vuoi che vengano stampati....
PHP:
$array_mappa_dati=['cliente_id','nome_cliente','etc.......'];
while($row = $result->fetch_assoc()){
    foreach($array_mappa_data as $dato){
      echo $row[$dato]."<br>";        
    }
}

Invece se devi stampare tutti i dati fai cosi
PHP:
while($row = $result->fetch_assoc()){
    foreach($row as $k=>$dato){
      echo $dato."<br>";       
    }
}
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
Ok grazie, aggiornerò la situazione appena possibile... grazie ancora!
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
purtroppo non va bene per me, perchè tutti i dti li devo impaginare penso in una tabella
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
se li devi inserire in una tabella:

PHP:
$table='<table>';
while($row = $result->fetch_assoc()){
$table.='<tr>'; 
foreach($row as $k=>$dato){
    $table.='<td>'.$dato.'</td>';
    }
$table.='</tr>'; 
}
$table.='</table>';
echo $table;
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
Andava tutto bene peccato solo che sono molti dati da mostrare e graficamente è un casino anche perchè ovviamente estrae tutti gli id numerici delle tabelle.
torno al metodo manuale ossia mi valorizzo le variabili una ad una e poi le impagino in più tabelle separate.
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Aiuto per pagina php PHP 0
I Aiuto php Dependent Lookup PHP 0
L Aiuto per programma web php/mySQL PHP 2
A Aiuto php colore diverso PHP 10
C Aiuto compiuto scuola PHP/MySQL PHP 2
Michelebozzo [PHP] Rimuovere pubblicazione nome pagina ... aiuto! PHP 7
Z Gestionale in Php/mysql: Quanto farsi pagare? Aiuto! Discussioni Varie 0
P [PHP] Browser game, aiuto a tempo libero. Offerte e Richieste di Lavoro e/o Collaborazione 0
C [PHP] Chiedo un aiuto, Array multidimensionale. PHP 3
T [PHP] aiuto....Fatal error: Uncaught Error:non riesco a capire PHP 1
N [PHP] Aiuto PHP 1
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
W [PHP] Un aiuto per il mio primo "Multithread" PHP 0
J [PHP] richiesta di aiuto PHP 3
F [PHP] Aiuto SELECT DISTINCT / GROUP BY PHP 17
F [PHP] Aiuto array PHP 2
L [PHP] aiuto per installazione mrbs PHP 0
S [PHP] Aiuto! Non riesco a richiamare una variabile PHP 2
N [PHP] aiuto su variabili e colori PHP 4
C [PHP] Aiuto su visualizza foto da cartella PHP 6
P [PHP] aiuto creazione login PHP 16
S PHP: Aiuto con upload immagini che si auto tuotano PHP 24
P [PHP] Aiuto per gestione file CSV PHP 24
A aiuto php PHP 3
A php aiuto PHP 2
G Piccolo aiuto per php mail PHP 2
C Aiuto su script php PHP 2
F Aiuto PHP : Parse error PHP 1
G Aiuto! Studente cerca aiuto per un codice PHP PHP 1
S aiuto per script PHP/OOP PHP 2
S Un aiuto su uno script di ricerca avanzata in php che sto verificando. PHP 1
R Aiuto creazione php PHP 0
G Aiuto modifica PHP PHP 1
T Aiuto con script PHP PHP 0
S Aiuto con PHP! PHP 4
D Aiuto Ajax da PHP con codifica json Ajax 0
K aiuto su gestione casella select del form + php + mysql PHP 0
S [risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id. PHP 9
L Aiuto form php! PHP 1
N Aiuto php : Modulo Mail non funzionante - Dove sbaglio ? PHP 5
E [RISOLTO] Aiuto impostazione mail.php PHP 2
D aiuto con pag di login in php PHP 1
S [RISOLTO]aiuto, non riesco afar funzionare il camp odi ricerca per un DB con PHP PHP 5
W [Aiuto PHP Mysql] Script visualizzare a video righe di tabella mysql PHP 2
C aiuto php PHP 19
B AIUTO: come passare una variabile php ad una funzione javascript Javascript 2
Task Mc Aiuto per reindirizzamento in php PHP 7
S Come creare php.ini Aiuto! PHP 0
B Aiuto query mysql in php PHP 1
ivarello Aiuto invio form nascosto in PHP PHP 2

Discussioni simili