Hallo miteinander,
ich bin im Moment in den Staaten und schreibe hier meine Bachelorthesis, dafür muss ich 4 Datenbanken miteinander vergleichen und Diskrepanzen für manche Felder identifizieren.
Ich brauch nicht alle Felder der DBs und dafür habe ich eine Abfrage erstellt und lasse genau die Felder, die ich benötige in einer neuen Tabelle anzeigen. Soweit komme ich also klar ! Ich arbeite erst seit einer Woche mit MS Access aber so langsam komme ich rein.
Jedoch habe ich nun ein Problem:
Ich habe in dieser ABfrage, die ich erstellt habe Daten die mehrmals vorkommen. Ich habe versucht diese redundanzen rauszukriegen, das Problem ist aber, dass manche Felder von verschiedenen Datentypen sind. Ich kann die Datentypen nicht ändern, da die DB s vorgegeben sind. WIe kanne ich also mehrfach Einträge aus meiner Abfrage rauslöschen?
Vielen Dank schon im Voraus,
Esi
Hallo,
gehe in den Entwurfsmodus deiner Abfrage, wechsle in die SQL-Ansicht und schreibe nach der SELECT-Anweisung
DISTINCT Damit wird die Abfrage angewiesen Duplikate auszuschließen.
Dass gleiche (idente) Daten (also Duplikate) in Feldern verscheidenen Datentyps stehen kann ich mir nicht ganz vorstellen.
HTH
Peter
p.s.
Zitatdafür muss ich 4 Datenbanken miteinander vergleichen
Kann es sein, dass du da Tabellen meinst?
ja habe so eben selbst festgestellt, dass es 4 tabellen sind.
ich habs mit der Select distinct anweisung versucht jedoch hat es nicht geklappt:(
SELECT DISTINCT dbo_medhistorypamlmeds.MedHistoryCaseID
FROM dbo_medhistorypamlmeds, dbo_medhistorypharmacymeds, dbo_SchnipperMedications
WHERE dbo_medhistorypamlmeds.MedHistoryCaseID = dbo_medhistorypharmacymeds.MedHistoryCaseID = dbo_SchnipperMedications.MedHistoryCaseID
ORDER BY MedHistoryCaseID;
könnte an der anweisung was falsch sein?
ich beziehe es erstmal auf drei tabellen
Vielen DANK
nun hab ich eine fehlermeldung die etwa 10min gebraucht hat bis sie erscheint, welche meint. The text data type cannot be selected as DISTINCT because it is not comparable !! ^^ :-\
Hallo,
du kannst dich immer nur von einer Tabelle auf die andere beziehen - sowas geht nicht in 'Serie' ;)
mit JOINS (Standard)
SELECT DISTINCT Felderliste
FROM Tabelle1 INNER JOIN (Tabelle2 INNER JOIN Tabelle3 ON Tabelle2.PK = Tabelle3.FK) ON Tabelle1.PK = Tabelle3.FK
ORDER BY Sortierfeld;
oder nach deiner Methode
SELECT DISTINCT Feldliste
FROM Tabelle1, Tabelle2, Tabelle3
WHERE Tabelle1.PK = Tabelle2.FK AND Tabelle2.PK = Tabelle3.FK
ORDER BY Sortierfeld;
Zeige alle Tabellen im graphischen Abfrageentwurf an, ziehe die benötigten Beziehungen zwischen den Tabellen.
Danach ziehst du die benötigten Felder in die Feldliste und setzt deine Kriterien.
Der Access-Abfragegenerator erstellt automatisch die Abfrage mit JOIN!
Wie das konkret mit deinen Tabellen und Feldern ausschaut, kann ich nicht sagen, da ich das Zusammenspiel deiner PKs und FKs nicht kenne.
Ich bin ein wenig verwirrt, denn die Tabellenbezeichnungen scheinen fast als wären das SQL-Server-Tabellen - bei Access gibt es das Suffix dbo nicht.
Zitatnun hab ich eine fehlermeldung
Versuch mal die Abfrage nach meiner Empfehlung mit dem graphischen Abfrageeditor zuu erstellen...
Mal sehen was dann passiert...
ZitatThe text data type cannot be selected as DISTINCT because it is not comparable
passt nämlich gar nicht zu dem da ... SELECT DISTINCT dbo_medhistorypamlmeds.MedHistoryCaseID da ich stark annehme, dass das ein LongInteger sein wird.
Hallo database, ich habe nochmal alles versucht was du gesagt hast, das mir den joins hatte ich auch schon gemacht mir gehts nur um diese duplikate,die exakt gleich sind ^^ die sind unnötiig aber ich krieg sie nicht raus :(
Hallo,
poste nochmal den aktuellen SQL-String Deiner Abfrage...
SELECT dbo_medhistorypamlmeds.MedHistoryCaseID, dbo_medhistorypamlmeds.medname, dbo_medhistorypharmacymeds.ShortDescription, dbo_SchnipperMedications.MedName, dbo_medhistorypamlmeds.dose, dbo_medhistorypharmacymeds.Directions, dbo_SchnipperMedications.DRF
FROM ((dbo_medhistorypamlmeds INNER JOIN dbo_medhistorypharmacymeds ON (dbo_medhistorypamlmeds.medname = dbo_medhistorypharmacymeds.ShortDescription) AND (dbo_medhistorypamlmeds.MedHistoryCaseID = dbo_medhistorypharmacymeds.MedHistoryCaseID)) INNER JOIN dbo_SchnipperMedications ON (dbo_medhistorypharmacymeds.ShortDescription = dbo_SchnipperMedications.MedName) AND (dbo_medhistorypharmacymeds.MedHistoryCaseID = dbo_SchnipperMedications.MedHistoryCaseID)) INNER JOIN dbo_SchnipperAdmissionInfo ON dbo_SchnipperMedications.MedHistoryCaseID = dbo_SchnipperAdmissionInfo.MedHistoryCaseID;
also so funktioniert alles, jedoch gibt es ein Problem, da manche Daten 3fach vorkommen. Mit DISTINCT funktioniert die SQL Anfrage leider nicht :(
Hallo,
ich nehme an, die Abfrage wurde im Abfrageentwurf (handelt es sich hier um ein ADP-Projekt?) erzeugt. Stelle dort die Gruppierungsfunktion ein (auf das Summensymbol klicken).
Danke für den Tipp, hab ich jetzt auch mal versucht, :( klappt leider wieder nicht! Schon wieder die gleiche Fehlermeldung^^ ??? ??? ???
Aber vielen Dank für die Mühe !
Hallo,
m. E. stimmen da die Datentypen (der Text-Felder) nicht , bzw. nicht genau überein....
Ja, diese Stimmen leider nicht überein, einmal Memo einmal Text und das kann leider nicht verglichen werden, gibt es denn keine andere Lösung? Denn die Datentypen kann ich nicht ändern.
Danke
Hallo,
naja, was macht denn der Vergleich zwischen Memo und "Normaltext" (bzw. Memo und Memo) für einen Sinn? Wie so oft, läßt das Ganze auf unzulängliches und damit unbrauchbares Tabellendesign schliessen.
Bin mir jetzt nicht sicher, ob Konvertierungsfunktionen (oder Textlängen-Begrenzungen) in Deinem Fall in den Join-Vergleichen anwendbar sind.
Vielleicht hilft aber quick and dirty , neue Felder mit passenden Datentypen mit Textextrakt aus den Memos zu füllen und diese Felder für den Vergleich herzunehmen.
Am allerbesten ist es aber, mit IDs (Primär- und Fremdschüssel(feldern)) zu operieren.
Hallo nochmals,
nun, es ist so ich muss medikationsdaten verschiedener datenbanken miteinander vergleichen, aus diesem Grund macht ein memo-text (memo-memo) vergleich sinn;)
ich habe nun mit der Person geredet, der die DBs zur Verfügung gestellt hat und er hat die Datentypen angepasst und jetzt hab ich statt 81479179847 daten nur noch 1987948 :)
Vielen Dank für eure Hilfe !
Ich werde in den nächsten Monaten aber sicherlich noch öfters schreiben.
DANKE
Hallo,
na, das ist doch schon mal was.... :D