T-sql

Briefkasten

Erfahrenes Mitglied
Tabellen zusammenführen doppelte einträge unterbinden

Hallo,

ich möchte zwei Tabellen zusammenführen und doppelte einträge unterbinden. Wie mach ich das? Ich hab das atm so:

PHP:
use x
SELECT     Kontakte.Vorname, Kontakte.Nachname, Kontakte.Firma, Kontakte.Email, Kontakte.[Adresse Straße Geschäftlich], Kontakte.[Adresse Ort Geschäftlich], 
                      Kontakte.[Adresse PLZ Geschäftlich], Kontakte.[Adresse Bundesland Geschäftlich], Kontakte.[Adresse Land Geschäftlich]
FROM         Kontakte LEFT OUTER JOIN
                      Zusatzinformationen ON Zusatzinformationen.Kontaktid = Kontakte.id

In der Tabelle Zusatzinformationen kann die Kontaktid öfters wie einmal vorkommen. Somit habe ich manchmal mehrere Einträge zu viel. Will die nur einmal haben.

Muss ich hier einen anderen Join verwenden? Es handelt sich hierbei um T-SQL wobei das glaube ich nicht wirklich von relevanz ist.

mfg
 
Zuletzt bearbeitet:
Ich würde es gern mit GROUP BY machen. Da in der Tabelle nur Testdaten drinnen sind und somit auch mal was doppelt sein kann.

Ich hab das so gemacht

Code:
use x
SELECT     Kontakte.Vorname, Kontakte.Nachname, Kontakte.Firma, Kontakte.Email, Kontakte.[Adresse Straße Geschäftlich], Kontakte.[Adresse Ort Geschäftlich], 
                      Kontakte.[Adresse PLZ Geschäftlich], Kontakte.[Adresse Bundesland Geschäftlich], Kontakte.[Adresse Land Geschäftlich]
FROM         Kontakte LEFT OUTER JOIN
                      Zusatzinformationen ON Zusatzinformationen.Kontaktid = Kontakte.id
GROUP BY Zusatzinformationen.Kontaktid

Erhalte dann aber die Fehlermeldung:

Meldung 8120, Ebene 16, Status 1, Zeile 2
Die 'Kontakte.Vorname'-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist.

Woran kann das liegen?
 
Soweit ich das weiß, darfst du nur eine Spalte "Group By" machen, wenn die Spalte an erster Stelle steht.

Code:
use x
SELECT     Kontakte.id, Kontakte.Vorname, Kontakte.Nachname, Kontakte.Firma, Kontakte.Email, Kontakte.[Adresse Straße Geschäftlich], Kontakte.[Adresse Ort Geschäftlich], 
                      Kontakte.[Adresse PLZ Geschäftlich], Kontakte.[Adresse Bundesland Geschäftlich], Kontakte.[Adresse Land Geschäftlich]
FROM         Kontakte LEFT OUTER JOIN
                      Zusatzinformationen ON Zusatzinformationen.Kontaktid = Kontakte.id
GROUP BY Kontakte.id

Versuchs mal so:confused:
 
Ich hab jetzt versucht alle Einträge die doppelt in der Tabelle Kontakte sind zu finden:
Ich hab das so gemacht:

Code:
SELECT COUNT(1) FROM Kontakte GROUP BY Vorname, Nachname HAVING COUNT(id) > 2

Ich erhalte 2 felder -> 33 und 2703 bedeudet dass, das ich 33 + 2703 doppelte einträge habe?
 
Deine Variante erscheint mir irgendwie falsch. Probiers mal so:
Code:
SELECT Kontakte.Vorname, Kontakte.Nachname
FROM Kontakte 
GROUP BY Kontakte.Vorname, Kontakte.Nachname
HAVING count(*) > 1
 

Neue Beiträge

Zurück