Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [MYSQL] Problema INNER JOIN fra più tabelle

    Buongiorno, praticamente riesco a collegare fra loro 3 tabelle ma se aggiungo la quarta non mi trova più alcun dato.

    Può essere perchè utilizzo la stessa chiave per unire le ultime due tabelle?

    Codice funzionante con 3 tabelle:

    codice:
    SELECT clienti.db_clienti.ID_CLIENTE, clienti.commessa.ID_COMMESSA 
    FROM clienti.db_clienti
    INNER JOIN clienti.commessa 
    ON db_clienti.ID_CLIENTE = commessa.ID_CLIENTE
     
    INNER JOIN clienti.fotovoltaico
    ON commessa.ID_COMMESSA = fotovoltaico.ID_COMMESSA
    
    WHERE clienti.db_clienti.RAGIONE_SOCIALE LIKE '%PROVA%';
    Codice non funzionante con 4 tabelle

    codice:
    SELECT clienti.db_clienti.ID_CLIENTE, clienti.commessa.ID_COMMESSA 
    FROM clienti.db_clienti
    INNER JOIN clienti.commessa 
    ON db_clienti.ID_CLIENTE = commessa.ID_CLIENTE
     
    INNER JOIN clienti.fotovoltaico
    ON commessa.ID_COMMESSA = fotovoltaico.ID_COMMESSA
    
    INNER JOIN clienti.idroelettrico
    ON commessa.ID_COMMESSA = idroelettrico.ID_COMMESSA
    
    WHERE clienti.db_clienti.RAGIONE_SOCIALE LIKE '%PROVA%';
    Vi prego illuminatemi...grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Dai per scontato che un cliente è cliente fotovoltaico e idroelettrico. Non di l'uno o dell'altro o di entrambi.

    Toglimi una curiosità. Perchè ci sono tabelle differenti per i clienti e non una sola ?

    Prova con LEFT JOIN per le due ultime tabelle. Comunque. Non conosco il tuo database quindi non so quali sono i legami reali tra le tabelle. Quindi LEFT JOIN potrebbe non funzionare.
    Ultima modifica di badaze; 06-04-2016 a 19:25
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Ho 4 tabelle, cliente -> commessa mentre la commessa può essere o fotovoltaico o idroelettrico, non ho piu tabelle per i clienti ma soltanto db_clienti....provo con left join e poi casomai parto ad imprecazioni...si risolverà apparte gli scherzi provo e vedo che succede, grazie intanto.

  4. #4
    A stò punto mi viene il grosso dubbio di aver fatto un db completamente sbagliato..spiego un po' come ho "ideato" il database.

    Tabella db_clienti (uno a molti) Tabella commessa (tramite campo ID_CLIENTE)


    Tabella commessa (uno a molti) Tabella fotovoltaico (tramite campo ID_COMMESSA)
    Tabella commessa (uno a molti) Tabella idroelettrico (tramite campo ID_COMMESSA)
    Tabella commessa (uno a molti) Tabella altra_tipologia (tramite campo ID_COMMESSA)
    Tabella commessa (uno a molti) Tabella altra_tipologia (tramite campo ID_COMMESSA)

    E poi verran create nuove tabelle per ogni possibile tipologia di commessa sempre legate tramite ID_COMMESSA

    Detto ciò, ho sbagliato qualcosa? Posso poi crearmi una query che mi ricerca valori in n tabelle? o mi conviene creare una query che ricerca solo nella tabella interessata?

    Grazie ancora, nel frattempo buonagiornata.

  5. #5
    Scusate la moltitudine di meessaggi ma non capisco come modificare il precedente,in ogni caso ho risolto, o almeno penso di aver risolto passando il nome della tabella via variabile e di conseguenza far l'inner join solo con quella tabella

    codice:
     "SELECT clienti.db_clienti.ID_CLIENTE, clienti.commessa.ID_COMMESSA 
    FROM clienti.db_clienti
    INNER JOIN clienti.commessa 
    ON clienti.db_clienti.ID_CLIENTE = clienti.commessa.ID_CLIENTE
     
    INNER JOIN clienti.$NOME_TABELLA
    ON clienti.commessa.ID_COMMESSA = clienti.$NOME_TABELLA.ID_COMMESSA
    
    WHERE $CAMPO_RICERCATO LIKE %$VALORE_RICERCATO%"
    Ora però sbaglio qualcosa nel WHERE LIKE poichè mi si presenta questo errore:

    "
    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LIKE %%' at line 9"

    Quindi vado a studiarmi un po' di sintassi cercando di capire che sbaglio...

  6. #6
    Confermo che funziona tutto, mi mancavano solo due ' prima e dopo i %

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.