• User Attivo

    Correttezza query mysql

    Salve, mi sto incervellando in una query con mysql che non mi da i risultati dovuti, spiego la situazione.

    Ho un database di un portale dove si registrano degli utenti, quindi ho una tabella principale dove vanno inseriti gli utenti con i loro dati, poi avendo molti dati in comune come città, provincia ecc... ho predisposto delle tabelle secondarie che sono richiamate dalla tabella principale con chiavi esterne, e in alcuni casi dove c'è una relazione molti a molti tra la tabella principale e quella secondaria, ho creato una tabella intermediaria che contiene 2 chiavi esterne che puntano rispettivamente agli indici delle 2 tabelle.

    Se la struttura che ho creato è corretta, devo fare una select per prelevare tutti gli utenti e i rispettivi dati, e l'ho impostata in questo modo:

    SELECT elenco tutti campi che mi servono senza nominare le chiavi esterne FROM utenti JOIN eta ON utenti.id_capelli=capelli.id_capelli JOIN (prov_utenti JOIN provincie ON prov_utenti.id_provincia=provincie.id_provincia) ON utenti.id_utente=prov_utenti.id_utente JOIN .......

    In pratica elenco i campi che mi servono e poi faccio delle INNER JOIN a partire dalla tabella utenti e quando c'è una relazione molti a molti con una tabella di mezzo uso le parentesi per effettuare prima la JOIN tra la tabella intermediaria e quella secondaria e poi con la tabella principale.

    Facendo così non ho nessun risultato ma non ottengo nemmeno errori, cosa sbaglio?


  • User Attivo

    Se non ottieni errori significa solo che la sintassi della query è corretta, anche se la sua logica porta a restituire zero record.
    Probabilmente un JOIN è fatto in modo da non restituire nulla, questo fa si che tutta la query non renda alcun record.
    Per vedere qualcosa puoi aggiungere un LEFT a tutti i JOIN, in modo da vedere quale di questi blocca l'output.


  • User Attivo

    Ho risolto, ho dovuto aggiungere LEFT alle JOIN fuori parentesi quando c'è la relazione molti a molti e adesso i risultati sono regolari.

    Grazie dell'aiuto.