Veröffentlicht 25. März 200916 j 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.
25. März 200916 j 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;
25. März 200916 j 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
25. März 200916 j 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 200916 j von thundergod
25. März 200916 j 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
25. März 200916 j 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
25. März 200916 j 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
26. März 200916 j 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!
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.