Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    14

    [MySQL] JOIN tra tabelle con estrazione valori null?

    Buongiorno. Continuo a guardare la mia stringa SQL ma credo di seguire la strada sbagliata per raggiungere il mio risultato. Espongo il problema, spero possiate aiutarmi.
    Ho 3 tabelle.
    La prima DATI in cui vengono inserite info varie ed in particolare ID.UTENTE e ID.TIPO
    La seconda UTENTI in cui ho la descrizione dell'utente ed in particolare il campo univoco ID.UTENTE
    La terza, l'ultima, TIPO (di 5 record) in cui ho la descrizione della tipologia ed in particolare il campo univoco ID.TIPO

    Ora devo estrarre tutti i dati da TIPO con il JOIN a DATI tramite ID.TIPO e quindi a UTENTI tramite ID.UTENTE

    Il problema e' che devo estrarre una SELECT di tutte le 5 righe di TIPO contenenti le info di DATI e di UTENTI dove presenti.
    Non e' detto infatti che UTENTE abbia il record in DATI ma vorrei estrarre comunque tutti i dati di TIPO indipendentemente UTENTE e DATI sia presente anche ottenendo valori null.

    Es.
    codice:
    TIPO.ID TIPO.DESC UTENTE.NOME DATI.DESCR
    1       Dato1     NULL        NULL
    2       Dato2     PAOLO       GIALLO
    3       Dato3     NULL        NULL
    4       Dato4     LUCA        ROSSO
    5       Dato5     NULL        NULL

    Come arrivo a questo risultato?

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    hai provato con left join?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    14
    Quote Originariamente inviata da drstefa Visualizza il messaggio
    ...
    Es.
    codice:
    TIPO.ID TIPO.DESC UTENTE.NOME DATI.DESCR
    1       Dato1     NULL        NULL
    2       Dato2     PAOLO       GIALLO
    3       Dato3     NULL        NULL
    4       Dato4     LUCA        ROSSO
    5       Dato5     NULL        NULL
    Scusate, errore, rettifico...
    codice:
    TIPO.ID TIPO.DESC UTENTE.NOME DATI.DESCR
    1       Dato1     NULL        NULL
    2       Dato2     PAOLO       GIALLO
    3       Dato3     NULL        NULL
    4       Dato4     PAOLO       ROSSO
    5       Dato5     NULL        NULL

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    14
    Si, fatto... il mio problema, ed il perche' non riesco a trovarne il dritto, e' che la tabella "dinamica" ossia quella che riceve principalmente i dati e' il collegamento alle altre "descrittive" (ossia quelle che da un indice ID restituiscono una serie di info).
    Per cui se uso i LEFT JOIN ottengo tutte le info necessarie ma della sola tabella DATI, qundi, per spiegarmi meglio, di tutti i record di DATI agganciati ai dati descrittive delle altre 2. Tornado all'esempio precedente linkando in LEFT JOIN la tabella risulterebbe:
    codice:
    TIPO.ID TIPO.DESC UTENTE.NOME DATI.DESCR
    2       Dato2     PAOLO       GIALLO
    4       Dato4     PAOLO       ROSSO
    Non e' cio' che vorrei...

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Posteresti la query che hai fatto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    14
    SELECT t.id, t.descr, u.nome, d.descr FROM tipo AS t LEFT JOIN dati AS d ON t.id=d.id_dati LEFT JOIN utenti AS u ON d.id_utenti=u.id WHERE active=1 AND d.id_utenti=1

    Sta maturando in me l'idea di dover fare un select annidato ...

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    a me sembra che la query possa funzionare, ma non posso replicarla visto che non ho la tua struttura dati...

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    14
    Se vuoi creo la queey per creare il db completo della base dati ma ti assicuro che la queey cosi scritta da solo le righe in cui ci sono tutti i dati joinati.
    C'e' qualcosa che non torna ma non riesco a capire...

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    io l'ho fatta simile (cambiano i nomi dei campi) e mi pare che abbia funzionato correttamente (mi metteva i null per i campi dove non c'erano dati)
    qualcuno più bravo di me conoscerà sicuramente la soluzione

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    14
    Clasku, ti ringrazio. Purtroppo provo e riprovo e non vedo il risultato aspettato. Credo il problema sia che la clusola WHERE che filtra l'utente non sia nella tabella che contiene il JOIN delle altre 2. Di conseguenza il filtro stronca il collegamento.
    Credo la soluzione sia una UNION di 2 tabelle, la prima relativa alla SELECT indicata e la seconda relativa a TIPO con valori NULL.

    In attesa di un'alternativa e ringraziandoti del tempo provo questa soluzione.

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.