Quindi si tratta di relazione molti a molti e deve essere effettuata con una tabella aggiuntiva
Altrimenti ti trovi a scrivere N volte la descrizione della carica
Seguendo il tuo esempio
d|idcarica|idgilda|carica
4|0|0|adepto
5|1|0|iniziato
6|2|0|maestro
7|0|1|adepto
Riscrivendo innumerevoli volte la stringa "adepto"
Inoltre ti trovi id_gilda ripetuto anche dove non serve
Una struttura ordinata dovrebbe evitare qualsiasi "ridondanza" di dati
In realtà continuo a non capire la necessità della tabella "cariche_gilda"
Il tutto potrebbe essere gestito così
Tabella 'gilde'
id - gilda
Tabella 'cariche'
id - carica
Tabella 'utenti'
id - utente - id_gilda - id_carica
codice:
SELECT UT.utente, GI.gilda, CA.carica
FROM utenti as UT, gilde as GI, cariche as CA, cariche_gilda as CG
WHERE
UT.id_gilda = $idgilda
and
GI.gilda = $idgilda
and
CA.id = UT.id_carica