Join 3 tabelle

miagy

Utente Attivo
2 Nov 2014
71
0
6
Ciao ragazzi,
mi sto dilettando nello studio del PHP e ammetto di avere un serio problema con la funziona JOIN quando si tratta di 3 tabelle.

Allo stato attuale:

gruppo
id_gruppo || nome_gruppo

1 -------------------- Gruppo 1
2 --------------------Gruppo 2
3 --------------------Gruppo 3

carica_gruppo
id_carica || id_gruppo || nome_carica

1 ---------------------1 -----------Ruolo_gruppo1_1
2 ---------------------1 ----------Ruolo_gruppo1_2
3 --------------------2 ----------Ruolo_gruppo2_1
4 --------------------3 ----------Ruolo_gruppo3_1
5 --------------------3 ----------Ruolo_gruppo3_2
6 -------------------- 3 ----------Ruolo_gruppo3_3

membri
nome_membro || id_carica

Tizio -------------------------- 4
Caio -------------------------- 6
Sempronio ----------------1


Il mio problema sorge quando provo a creare una pagina con una tabella, divisa su due colonne, a sinistra il nome dei membri appartenenti allo stesso gruppo (ordinati per id_carica) e a destra un select con tutte le cariche di quel gruppo (ovviamente dentro un ciclo while).

So fare un JOIN a 2, ma non a 3:

SELEZIONO SOLO LE CARICHE STESSO GRUPPO:

PHP:
$cariche = "SELECT carica_gruppo.*, gruppo.* 
FROM carica_gruppo JOIN gruppo ON carica_gruppo.id_gruppo = gruppo.id_gruppo
WHERE carica_gruppo.id_gruppo IN
(SELECT carica_gruppo.id_gruppo 
FROM membri JOIN carica_gruppo ON membri.id_carica = carica_gruppo.id_carica 
WHERE membri.nome_membro= $login AND carica_gruppo.id_gruppo>0)";

SELEZIONO SOLO LE PERSONE STESSO GRUPPO:

PHP:
$membri = "SELECT membri.*, carica_gruppo.* 
FROM membri JOIN carica_gruppo ON membri.id_carica=carica_gruppo.id_carica 
WHERE  carica_gruppo.id_gruppo IN 
(SELECT carica_gruppo.id_gruppo 
FROM membri JOIN carica_gruppo ON membri.id_carica = carica_gruppo.id_carica 
WHERE membri.nome_membro= $login AND carica_gruppo.id_gruppo>0)";

A questo punto nasce l'inghippo.

Riesco a far comparire a sinistra i membri, ma nella colonna di destra, quando devo avviare il comando select con all'interno solo le cariche relative a quel gruppo, mi perdo.
Posto quello che sono riuscito a fare:

PHP:
<?php
//richiamo i membri
$membri = "SELECT membri.*, carica_gruppo.* 
FROM membri JOIN carica_gruppo ON membri.id_carica=carica_gruppo.id_carica 
WHERE  carica_gruppo.id_gruppo IN
(SELECT carica_gruppo.id_gruppo 
FROM membri JOIN carica_gruppo ON membri.id_carica = carica_gruppo.id_carica 
WHERE membri.nome_membro= $login AND carica_gruppo.id_gruppo>0)";
$risultato_membri = ok_query($membri, 'result');

while($row = ok_query($risultato_membri, 'fetch')) {
?>
<tr>
    <td>
   <u><?php echo  $row['nome_membro']; ?></u>
  </td>
<td>
<select>
<option>???????? cariche del gruppo</option>
</select>
</td>
</tr>
<?php }//fine while ?>
?>
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
R Join articolato su 3 tabelle MySQL 5
M Problema su query JOIN in tre tabelle PHP 0
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
S [PHP] Inner join su 4 tabelle PHP 6
C Php/Mysql query JOIN tra tabelle PHP 4
C Php/Mysql query JOIN tra due tabelle PHP 18
G [MS Access] JOIN di due tabelle più GROUP BY MS Access 1
L cinque tabelle e join PHP 2
P Join tabelle MySQL 4
D Problema sintassi INNER JOIN a 3 tabelle PHP 4
L inner join su due tabelle PHP 5
L Inner Join con più tabelle PHP 5
M join tabelle PHP 0
Monital [Mysql]Confronto tra tabelle ed inseirmento dati- Comando JOIN (Credo) MySQL 0
A Inner join con tre tabelle PHP 0
A JOIN di 4 tabelle Database 0
C Fare una Join di 3 tabelle PHP 2
L select join e sottrazione punti PHP 13
M Ordinare una query join PHP 2
M Estrarre valori MAX da un db con una left join MySQL 8
P Query Mysql con Join PHP 2
M [PHP] Aiuto su inner join PHP 10
F [MySQL] Problema con LEFT JOIN MySQL 6
P [MySQL] Inner Join o Left Join MySQL 14
simgia [PHP] Ciclare una query JOIN PHP 2
simgia [MySQL] INNER JOIN problema MySQL 0
R [PHP] Estrapolare dati da una query left join PHP 0
R [MySQL] SQL UPDATE INNER JOIN MySQL 5
G [MySQL] Join o select MySQL 1
R [MySQL] Join, Count e Order (ASC & DESC)... MySQL 6
B Outer join che non funge Database 2
jdj78 inner join Classic ASP 18
V [Guida]: ho dubbi sulle Join MySQL 13
P Query con Somma di un Campo , aggregazione e join Database 3
V Quando mettere il JOIN e quando no? MySQL 1
Marco_88 Select distinct e join MySQL 2
Marco_88 Eliminare una colonna da una LEFT JOIN MySQL 4
M Query Join per 2 colonne MySQL 1
L inner join MySQL 0
andrea.peo Problema query con join visualizzazione record ripetuti PHP 5
I Aiuto INNER JOIN MySQL 5
D Il JOIN che non imparerò mai ad usare MySQL 2
V Problema JOIN SQL PHP 3
A Ottimizzare di più JOIN su tabella/e da 25.000 records MySQL 0
S Mistero Join MySQL 0
G unire union e join insieme MySQL 7
ivarello JOIN Mysql PHP 2
A Count Inner Join e stampa record con id non duplicati PHP 1
P utilizzare INN JOIN PHP 8
N JOIN o non JOIN MySQL 2

Discussioni simili