Zum Inhalt springen

SQL zwei Tabellen auswerten


thundergod

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...