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

    [mysql] Problema con le left join

    Ciao a tutti, una domanda sulle left join.

    Ho 3 tabelle
    commesse
    clienti
    addetti

    in commesse ho un campo idCliente che collega alla tabella clienti nel quale c'è un campo capocomm che si collega alla tabella addetti

    codice:
    SELECT commesse.codice as codice, clienti.descrizione as cliente, addetti.nome as responsabile
    
    FROM commesse
    
    
    LEFT JOIN clienti ON commesse.idCliente = clienti.id 
    LEFT JOIN addetti ON  clienti.capocomm = addetti.id
    
    
    
    
    WHERE clienti.descrizione LIKE '%%' AND addetti.nome LIKE '%%' AND commesse.codice LIKE '%%' LIMIT 0, 25
    Il problema che ho è che se nella tabella cliente non c'è indicato il capocomm non mi mostra nemmeno la riga della commessa. Sbaglio o utilizzando le LEFT JOIN dovrebbe mostrarmi comunque la riga con valore NULL come capocomm?

    Grazie per i buoni di cuore!
    Griggio Claudio

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Quote Originariamente inviata da griggioclaudio Visualizza il messaggio
    Ciao a tutti, una domanda sulle left join.

    Ho 3 tabelle
    commesse
    clienti
    addetti

    in commesse ho un campo idCliente che collega alla tabella clienti nel quale c'è un campo capocomm che si collega alla tabella addetti

    codice:
    SELECT commesse.codice as codice, clienti.descrizione as cliente, addetti.nome as responsabile
    
    FROM commesse
    
    
    LEFT JOIN clienti ON commesse.idCliente = clienti.id 
    LEFT JOIN addetti ON  clienti.capocomm = addetti.id
    
    
    
    
    WHERE clienti.descrizione LIKE '%%' AND addetti.nome LIKE '%%' AND commesse.codice LIKE '%%' LIMIT 0, 25
    Il problema che ho è che se nella tabella cliente non c'è indicato il capocomm non mi mostra nemmeno la riga della commessa. Sbaglio o utilizzando le LEFT JOIN dovrebbe mostrarmi comunque la riga con valore NULL come capocomm?

    Grazie per i buoni di cuore!
    resto un attimo in dubbio, la query me sembrerebbe esatta. non e che non filtra i dati a causa della where??? hai provato senza la where?
    Ultima modifica di 123delphi321; 16-05-2014 a 18:51

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    La WHERE non filtra nulla perché è sempre vera. Semmai consiglierei di togliere i LIKE quando sono vuoti, perché l'ottimizzatore non si accorge, e legge quelle righe per intero. Se hai un milione di righe, legge 3 milioni di valori che non dovrebbe leggere e ci fa un confronto abbastanza complicato, senza motivo.

    Probabilmente è sbagliata la seconda ON, oppure hai dei dati sbagliati in tabella.

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.