Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

Moin,

Das Stichwört wäre Join (left / right)

oder auch "Not IN ()"

Reinhold

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;

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

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 von thundergod

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

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

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.