thundergod Geschrieben 25. März 2009 Teilen Geschrieben 25. März 2009 Guten Morgen, ich habe zwei vom Aufbau her identische Tabellen ( Name, Vorname, Sportart). Da unterschiedliche Datensätze in den Tabellen sind, möchte ich herausfinden, welche Datensätze nur in der einen Tabelle sind. Ich versuche das mit Access zu realisieren, weshalb ein minus select leider nicht möglich ist. Meine SQL-Abfrage sieht zZ so aus: SELECT sportler1q.name, sportler1q.vorname, sportler1q.sportart FROM sportler1q, sportler2q WHERE sportler1q.name <> sportler2q.name and sportler1q.vorname <> sportler2q.vorname and sportler1q.vorname <> sportler2q.sportart; Leider liefert sie nicht das gewünschte Ergebnis. Falls jemand eine Idee hat wäre ich sehr dankbar. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 25. März 2009 Teilen Geschrieben 25. März 2009 Das Stichwört wäre Join (left / right) Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 25. März 2009 Teilen Geschrieben 25. März 2009 Moin, Das Stichwört wäre Join (left / right) oder auch "Not IN ()" Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thundergod Geschrieben 25. März 2009 Autor Teilen Geschrieben 25. März 2009 Das Problem dabei ist nur, dass ich für ein Join doch ein Atrribut angeben muss. Es geht ja leider nicht: SELECT ... FROM sportlerq1 left join sportler2q on sportler1q.name = sportler2q.name, sportler1q.vorname = sportler2q.vorname, sportler1q.sportart = sportler2q.sportart; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 25. März 2009 Teilen Geschrieben 25. März 2009 Es geht ja leider nicht geht nicht ... naja, das übliche: ist keine fehlerbeschreibung. erstens verwendest du bei deinem SQL einmal sportlerq1 und einmal sportler1q als tabellenname; das kann nicht klappen. du solltest ausserdem einen OUTER JOIN machen, denn du willst unterschiede in den ergebnismengen finden und nicht gleichheiten (INNER / EQUI / LEFT JOIN). zieh dir das ganze doch erstmal in der entwurfsansicht zusammen. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thundergod Geschrieben 25. März 2009 Autor Teilen Geschrieben 25. März 2009 (bearbeitet) EDIT: Mit NOT IN habe ich gerade ein wenig herumexperimentiert aber leider sind bei folgender Abfrage nicht die gewünschten Ergebnisse erzielt worden -.- SELECT sportler1q.Name, sportler1q.Vorname, sportler1q.Sportart FROM sportler1q WHERE (((sportler1q.Name) Not In (SELECT sportler2q.name FROM sportler2q;)) AND ((sportler1q.Vorname) Not In (SELECT sportler2q.vorname FROM sportler2q;))); Das Problem ist, dass ich eigendlich auf alle 3 Attribute vergleich muss, da es ja sein kann, dass jem mit dem gleichen Namen an einer anderen Sportart teilnimmt. Stehe leider immernoch vor einem Rätsel. Um da es sich um Access SQL handelt ist ein Outer Join leider nicht möglich... Bearbeitet 25. März 2009 von thundergod Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 25. März 2009 Teilen Geschrieben 25. März 2009 Moin, EDIT: Mit NOT IN habe ich gerade ein wenig herumexperimentiert aber leider sind bei folgender Abfrage nicht die gewünschten Ergebnisse erzielt worden -.- SELECT sportler1q.Name, sportler1q.Vorname, sportler1q.Sportart FROM sportler1q WHERE (((sportler1q.Name) Not In (SELECT sportler2q.name FROM sportler2q;)) AND ((sportler1q.Vorname) Not In (SELECT sportler2q.vorname FROM sportler2q;))); Das Problem ist, dass ich eigendlich auf alle 3 Attribute vergleich muss, da es ja sein kann, dass jem mit dem gleichen Namen an einer anderen Sportart teilnimmt. Stehe leider immernoch vor einem Rätsel. Um da es sich um Access SQL handelt ist ein Outer Join leider nicht möglich... Stuss! Natürlich kann Access Outer-Join. Du hast zwar die Access-Version nicht verraten, aber das konnte Access schon spätestens ab Version 2.0. Mir scheint es doch eher so, als ob deine gesamte Datenbank nicht sauber aufgebaut ist. Welchen Sinn könnte es denn haben, mehrere identische Tabellen zu erstellen? Außerdem scheinen mir die Tabellen keinen (sinnvollen) Primärschlüsel zu haben, andernfalls entstünde dein Problem erst gar nicht. Falls du den Datenbankaufbau beinflussen kannst, dann ändere das am besten und lies dich ggf. in Normalisierung ein. Falls nicht, hau dem auf den Hals, der dieses Datenbankdesign verbrochen hat. Kopfschüttelnd Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thundergod Geschrieben 25. März 2009 Autor Teilen Geschrieben 25. März 2009 Das eigentliche Problem ist 2 (fast) identische Listen zu vergleichen die als Excel-Datei vorliegen. Da ich nicht besonders viel Lust hatte den Spaß in Excel VBA umzusetzen, habe ich mir die beiden Listen in Access importiert. Sinn den ganzen ist es herauszufinden, welche Sportler auf der einen Liste nicht auftauchen, die aber bei der anderen aufgeführt sind und umgekehrt. Um ja es gibt in dem Sinne keinen richtigen Primärschlüssel. Access Version 2000 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 25. März 2009 Teilen Geschrieben 25. März 2009 Das eigentliche Problem ist 2 (fast) identische Listen zu vergleichen die als Excel-Datei vorliegen. wie ich immer gerne sage: eine zahnarzt macht wurzeloperationen auch nicht durch die bauchhöhle oder ... ähm ... Da ich nicht besonders viel Lust hatte den Spaß in Excel VBA umzusetzen, habe ich mir die beiden Listen in Access importiert. mach dir doch einen SVERWEIS, indem du name, vorname und sportart mittels VERKETTEN zusammenziehst und automatisch eindeutige datensatznamen erzeugst. dazu brauchst du keine datenbank. Um ja es gibt in dem Sinne keinen richtigen Primärschlüssel. aber einen gedachten, aus drei feldern zusammengesetzten. bitte nicht so kompliziert denken :floet: s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thundergod Geschrieben 26. März 2009 Autor Teilen Geschrieben 26. März 2009 Vielen Dank für den guten Hinweis. Stimmt es geht auch einfacher. Hab jetzt mit VERKETTEN die 3. Zellen zusammengezogen und mit der Funktion VERGLEICH in der anderen Tabelle gesucht. Hat super geklappt. Vielen dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.