Visualizzazione dei risultati da 1 a 5 su 5

Discussione: full join

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    34

    full join

    salve
    stò cercando di effettuare una full join su due tabelle ma non riesco ad ottenere il risultato sperato.
    Tabella view_ultimaPulizia:
    ID_caldaia ultimaPulizia
    1 2024-01-28
    2 2024-01-18
    3 2015-11-11

    tabella view_ultimaVerificaFumi:
    ID_caldaia ultimaVerificaFumi
    2 2024-01-18
    3 2015-11-11
    4 2023-02-07

    simulo una query full join unendo due select rispettivamente con una left join e right join:
    codice:
    SELECT *
    from view_ultimaVerificaFumi
    LEFT JOIN view_ultimaPulizia
    on view_ultimaVerificaFumi.ID_caldaia=view_ultimaPulizia.ID_caldaia
    UNION ALL
    SELECT *
    from view_ultimaVerificaFumi
    RIGHT JOIN view_ultimaPulizia
    on view_ultimaVerificaFumi.ID_caldaia=view_ultimaPulizia.ID_caldaia
    risultato query:
    ID_caldaia ultimaVerificaFumi ID_caldaia ultimaPulizia
    2 2024-01-18 2 2024-01-18
    3 2015-11-11 3 2015-11-11
    4 2023-02-07 4 2023-02-07

    perchè non funziona??

  2. #2
    perché usi SELECT * ! I nomi delle colonne vanno qualificati, sennò poi succede quello che succede

    codice:
    SELECT
       F.ID_caldaia AS FID, F.ultimaVerificaFumi,
       P.ID_caldaia AS PID, P.ultimaPulizia
    FROM 
       view_ultimaVerificaFumi F
       LEFT JOIN view_ultimaPulizia P ON F.ID_caldaia=P.ID_caldaia
    
    UNION ALL
    
    SELECT 
       F.ID_caldaia AS FID, F.ultimaVerificaFumi,
       P.ID_caldaia AS PID, P.ultimaPulizia
    FROM
       view_ultimaVerificaFumi F
       RIGHT JOIN view_ultimaPulizia P ON F.ID_caldaia=P.ID_caldaia

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    34
    grazie Optime..
    prima di chiedere aiuto qui sul forum ho provato a scrivere la query in vari modi trovando spunto da varie guide ma sicuramente intrecciavo qualcosa!
    Adesso provo subito la tua soluzione.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    34
    Quote Originariamente inviata da optime Visualizza il messaggio
    perché usi SELECT * ! I nomi delle colonne vanno qualificati, sennò poi succede quello che succede

    codice:
    SELECT
       F.ID_caldaia AS FID, F.ultimaVerificaFumi,
       P.ID_caldaia AS PID, P.ultimaPulizia
    FROM 
       view_ultimaVerificaFumi F
       LEFT JOIN view_ultimaPulizia P ON F.ID_caldaia=P.ID_caldaia
    
    UNION ALL
    
    SELECT 
       F.ID_caldaia AS FID, F.ultimaVerificaFumi,
       P.ID_caldaia AS PID, P.ultimaPulizia
    FROM
       view_ultimaVerificaFumi F
       RIGHT JOIN view_ultimaPulizia P ON F.ID_caldaia=P.ID_caldaia
    Funziona!! Non son quante notti insonne ho passato

    Ne approfitto..quindi ottenuto questo risultato:

    FID ultimaVerificaFumi PID ultimaPulizia
    249 2019-08-05 NULL NULL
    1488 2024-01-08 NULL NULL
    NULL NULL 1 2024-01-28
    2 2024-01-18 2 2024-01-18
    2 2024-01-18 2 2024-01-18

    come posso mostrare i dati di altre due tabelle con la seguente relazione?
    Fid/Pid = tab_caldaie.id_caldaia
    tab_caldaie.id_utente=tab_utente.id_utente

    cosi da mostrare per ogni caldaia i dati del cliente e i dati della caldaia..


  5. #5
    ti conviene partire dalla tabella della caldaie, poi LEFT JOIN su tutte le tabella secondarie, una colonna per ognuna: fatti ispirare da questo https://lnx.dicesare.com/sql/sql-com...-di-risultati/

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 © 2024 vBulletin Solutions, Inc. All rights reserved.