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