Cercherò di rendere la mia domanda più inconfondibile possibile. Mi scuso in anticipo per qualsiasi errore di formulazione mentre cerco di esprimere la mia domanda nel modo migliore possibile:Complemento di un join SQL? È necessario l'aiuto di T-SQL
Utilizzo di T-SQL Ho bisogno di scrivere un'istruzione join che mi ottiene tutti i risultati che hanno una corrispondenza nella tabella A e tabella B
e (!)
un'altra join (o una continuazione della prima aderire) che restituisce tutti i risultati dalla tabella a che non hanno una corrispondenza nella tabella B, ma in questo secondo set di risultati Ho bisogno di avere una delle colonne impostata su "N/A" per identificare i record che non hanno una corrispondenza.
In altre parole, ho bisogno di qualcosa che restituisca tutto nella tabella A, ma identificherebbe anche le righe che non sono state abbinate in B. Tali informazioni vengono quindi utilizzate in un report.
Ecco quello che ho finora:
Ho la prima parte fatta:
LEFT OUTER JOIN dbo.chart B
ON B.UserName = A.user_name
Questo mi ottiene i record corrispondenti e solo i record corrispondenti
Ho provato ad aggiungere questa seconda join:
JOIN dbo.chart
ON NOT EXISTS (select * from B.UserName = A.user_name)
Sperando che mi ottenga i record non corrispondenti (ero progettando quindi di utilizzare SOSTITUISCI sulla colonna di interesse per etichettare quella colonna "N/A") ma c'è qualcosa di chiaramente sbagliato nel mio sintattico in quanto genera eccezioni.
La mia domanda è cosa devo cambiare per ottenere i risultati necessari. So che ho bisogno di avere almeno un join in quanto ho un'altra parte della query con cui lavorare. Semplicemente non so se ho bisogno di avere che un join restituisca entrambi i set di dati di cui effettivamente ho bisogno di un secondo solo per i record non corrispondenti.
Spero che questo non sia stato troppo confuso. Qualsiasi aiuto sarebbe molto apprezzato.
Grazie!
Aggiornamento: Vorrei solo sottolineare che il motivo per cui ho pensato di utilizzare un secondo join invece di ottenere tutti i risultati in una sola volta è perché ho bisogno di individuare ed etichettare le righe che non sono stati abbinati all'interno di tutto correttamente che Torno.
'join' esterno sinistro dovrebbe darvi quello che volete. Tutte le righe da A e unite a B dove c'è una corrispondenza. Hai una condizione WHERE su alcune colonne nella tabella B? In tal caso, ciò renderebbe il join esterno in un join interno e sarà necessario spostare il segno di spunta nelle colonne della tabella B nella clausola join. –
Grazie per la risposta, Mikael. La cosa più grande che voglio realizzare (e il motivo principale per cui ho preso in considerazione l'idea di utilizzare un secondo join) è quella di essere in grado di identificare e cancellare quali righe sono state abbinate e quali no. – user1179071
Non è necessario un join aggiuntivo per questo. Usa 'Coalesce' come suggerito da Mark in un commento alla risposta di Dems. –