Sonntag 16. März 2008 von mha
Oftmals bekommt man Daten unterschiedlichster Art in Tabellenform geliefert und möchte schnell prüfen, ob die Daten keine Duplikate beinhalten.
Gegeben sei eine Artikeltabelle products mit den Feldern:
supplier | supplier_aid | Description | usw. usw.
Sollte selbstverständlich über den Schlüssel supplier, supplier_aid (Lieferant und Werksnummer) eindeutig sein.
Dies prüft man mit folgendem Ausdruck:
SELECT supplier, supplier_aid from products GROUP BY supplier, supplier_aid HAVING count(supplier_aid) >1
WICHTIG! Man muß die Bedingung in die HAVING Klausel stecken und nicht in die WHERE Klausel, da diese vor dem Gruppieren greifen würde.
Ist das Resultset leer, sind alle Datensätze eindeutlig, ansonsten werden die Duplikate angezeigt.
Kategorie: Datenbanken, SQL, Stammdaten |
1 Kommentar »
Montag 10. März 2008 von mha
Mit Hilfe des MINUS Operators kann man zwei Ergebnismengen kombinieren. Dabei werden bei MINUS alle Ergebnistuppel ausgegeben, die in der ersten, nicht aber in der zweiten der kombinierten Ergebnismengen enthalten sind.
WICHTIG!
Die Felder der Ergebnismengen müssen die selben Datentypen verwenden. Die Feldnamen werden aus der ersten Ergebnismenge übernommen. Ergebnistuppel welche in der zweiten Abfrage enthalten sind, jedoch nicht in der ersten vorkommen, werden ignoriert.
Beispiel: Es gebe 2 Tabellen mit Vereinsmitgliedern, als Ergebnis soll eine Liste mit allen Mitgliedern die in beiden Vereinen aktiv sind ausgegeben werden:
Tabelle: Schachclub
Name
Peter
Tom
Andy
Johann
Gerald
Tabelle: Tennisclub
Name
Michael
Peter
Andy
Roland
Die Abfrage:
SELECT Name FROM Schachclub MINUS SELECT Name FROM Tennisclub
liefert folgendes Ergebnis:
Name
Tom
Johann
Gerald
Kategorie: Datenbanken, SQL |
Keine Kommentare »
Montag 10. März 2008 von mha
Mit Hilfe des INTERSECT Operators kann man zwei Ergebnismengen kombinieren. Dabei werden bei INTERSECT alle Ergebnistuppel ausgegeben die in allen der kombinierten Ergebnismengen enthalten sind.
WICHTIG!
Die Felder der Ergebnismengen müssen die selben Datentypen verwenden. Die Feldnamen werden aus der ersten Ergebnismenge übernommen.
Beispiel: Es gebe 2 Tabellen mit Vereinsmitgliedern, als Ergebnis soll eine Liste mit allen Mitgliedern die in beiden Vereinen aktiv sind ausgegeben werden:
Tabelle: Schachclub
Name
Peter
Tom
Andy
Johann
Gerald
Tabelle: Tennisclub
Name
Michael
Peter
Andy
Roland
Die Abfrage:
SELECT Name FROM Schachclub INTERSECT SELECT Name FROM Tennisclub
liefert folgendes Ergebnis:
Name
Andy
Peter
Kategorie: Datenbanken, SQL |
Keine Kommentare »
Montag 10. März 2008 von mha
Mit Hilfe des UNION Operators kann man zwei Ergebnismengen kombinieren. Dabei werden bei UNION alle Ergebnistuppel ausgegeben die in einer der kombinierten Ergebnismengen enthalten sind.
WICHTIG!
Die Felder der Ergebnismengen müssen die selben Datentypen verwenden. Die Feldnamen werden aus der ersten Ergebnismenge übernommen.
Beispiel: Es gebe 2 Tabellen mit Vereinsmitgliedern, als Ergebnis soll eine Liste mit allen Mitgliedern beider Vereine ausgegeben werden:
Tabelle: Schachclub
Name
Peter
Tom
Andy
Johann
Gerald
Tabelle: Tennisclub
Name
Michael
Peter
Andy
Roland
Die Abfrage:
SELECT Name FROM Schachclub UNION SELECT Name FROM Tennisclub
liefert folgendes Ergebnis:
Name
Andy
Gerald
Johann
Michael
Peter
Roland
Tom
Mit UNION ALL werden alle Ergebnistuppel (auch doppelte) aller Teilmengen ausgegeben:
SELECT Name FROM Schachclub UNION ALL SELECT Name FROM Tennisclub
liefert also:
Name
Andy
Andy
Gerald
Johann
Michael
Peter
Peter
Roland
Tom
Kategorie: Datenbanken, SQL |
Keine Kommentare »