Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [SQL] Join tra tabelle

  1. #1

    [SQL] Join tra tabelle

    Ragazzi ho un problema con una join tra 2 tabelle.
    Ho le seguenti tabelle con i rispettivi campi:
    1) documenti_acq: numero_documento, ...., tipo_commento
    2) commenti_documenti: numero_documento, tipo, prima_dopo, commento

    In pratica nella tabella 2 sono presenti i commenti associati a ciascun documento (è possibile specificare se essi siano di testata (prima) o piede (dopo)).

    Io vorrei visualizzare i commenti di un dato ordine e non riesco.
    Ho fatto la seguente join:
    codice:
    select *
    from documenti_acq LEFT OUTER JOIN commenti_documenti ON documenti_acq.TIPO_COMMENTO = commenti_documenti.TIPO AND documenti_acq.NUMERO_DOCUMENTO = commenti_documenti.NUMERO_DOCUMENTO
    Mi ridà più record per un solo documento. Invece io voglio un record per ogni documento in cui vengano visualizzati i commenti di testata e di piede se presenti.

    Dove sbaglio??

  2. #2
    Allora, facciamo un po' di ordine.

    La tabella 1 dovrebbe contenere una chiave esterna della tabella 2, in modo che tu possa relazionarle. In questo caso, qual'è la chiave esterna?

  3. #3
    Esatto.
    Le chiavi della tabella 2 sono "numero_documento" e "tipo".
    Nella tabella 1 "numero_documento" è chiave primaria, mentre "tipo_commento" no.

  4. #4
    Ma quindi è il contrario? La tabella 2 contiene numero_documento che è una chiave esterna per relazionarla alla tabella 1? Devo capire questo per correggerti la JOIN!

  5. #5
    Esatto

  6. #6
    Ok. Realizzare la JOIN è banale, spero di aver capito la struttura delle due tabelle.

    Prova così.

    codice:
    SELECT *
    FROM documenti_acq da
    JOIN commenti_documenti cd ON (da.numero_documento = cd.numero_documento);

  7. #7
    Originariamente inviato da maxmozz
    Ok. Realizzare la JOIN è banale, spero di aver capito la struttura delle due tabelle.

    Prova così.

    codice:
    SELECT *
    FROM documenti_acq da
    JOIN commenti_documenti cd ON (da.numero_documento = cd.numero_documento);
    è come l'avevo scritta io la join, solo che io avevo messo in relazione anche il campo TIPO

  8. #8
    Si ma tu hai utilizzato una LEFT OUTER JOIN, e inoltre hai relazionato un campo che, da quanto mi hai spiegato, non va relazionato...

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.