DB-Zusammenführung scheitert an der User-ID

BayWotch 3.x wird nicht mehr unterstützt. Dieser Bereich dient als Archiv.
Antworten
Benutzeravatar
ThoBo
Beiträge: 36
Registriert: 04.08.2004, 11:06

DB-Zusammenführung scheitert an der User-ID

Beitrag von ThoBo »

Hallo Zusammen,

ich habe mehrere V3-DBs mit unterschiedlichen Kategorien angelegt.
Für eine Gesamtauswertung will ich diese unterschiedlichen DBs mittels Access in einer DB zusammenführen. Bei der Auswertung will ich auch die umsatzstärksten Verkäufer ermitteln.

Nun habe ich folgendes Problem:
Per Anfügeabfrage kann ich die Daten der einzelnen tblAuction-Tabellen in einer zusammenführen. Doch um die Verkäufer auswerten zu können, muss ich auch die einzelnen tblUser-Tabellen zusammenführen.
Da in jeder dieser tblUser-Tabellen die IDs aber als Autowert mit 1 anfangen, existieren z.B. zu den seller_ids in den tblUser-Tabellen unterschiedliche Usernamen.
Somit ist die Auswertung dann nicht mehr möglich, weil nicht eineindeutig.

Wie kann man dies lösen?
Die Auswertung nach Verkäufern ist doch sicherlich für viele wichtig.
Das Problem wird ebenso auftauchen, wenn jemand aufgrund der DB-Größe (max. 2 GB pro DB und max. 1 GB pro Tabelle) mit mehreren V3-DBs arbeiten muss.

Weiss jemand hierfür eine Lösung?

Vielen Dank im voraus und Grüße aus Hamburg,
Thorsten
Borkumer
Beiträge: 1443
Registriert: 03.01.2004, 17:27
Wohnort: Borkum
Kontaktdaten:

Beitrag von Borkumer »

Hallo!

Interessantes Problem! BW erwartet nur eine Tabelle mit den Personen- IDs und vergibt die IDs nach dem Zufallsprinzip (AutoWert). D.h., dass in mehreren Datenbanken der gleiche Käufer/Verkäufer unterschiedliche IDs hat.
Ich würde über die ID den Namen in die tblauction in ein zusätzliches Feld schreiben. Damit wird die tblUser überflüssig. Die Namen bei eBay sind eindeutig und können so in der dann folgenden weiteren Verarbeitung leicht verhackstückt werden. Allerdings wären dann die anderen Felder der tblUser für die Katz. Aber ob die so wichtig sind...und wenn, dann könnte man diese auch in die tblauction übernehmen.


EDIT: Da Access Abfragen wie Tabellen behandelt könnte man in jeder der einzelnen DBs zunächst mit einer Abfrage die tblAuction mit der tblUser verknüpfen und dann per "Union"-Abfrage mit den anderen zusammenführen. Allerdings dürfte diese Prozedur denn Vorgang erheblich verlangsamen.
Gruß

Tim
__________________________
XP Pro; SP3 (werde ohne Not auch nicht wechseln !!)
Benutzeravatar
ThoBo
Beiträge: 36
Registriert: 04.08.2004, 11:06

Beitrag von ThoBo »

Hallo Tim,

daran habe ich auch gedacht - ist bloß etwas umständlich, da man bei jeder neu hinzugefügten DB hierauf achten muss.

Vielleicht gibt es ja mit der kommenden V3-Import-Funktion eine Lösung.

Gruß,
Thorsten
Mischa
Beiträge: 801
Registriert: 04.01.2004, 07:28
Wohnort: Köln

Beitrag von Mischa »

Variante A: zusätzliches Feld: dbID
=========================================


man kann für jede datenbank eine eine DB-ID vergeben ... einfach ein anfügeabfrage erstellen auf die tabelle tblAuction:


select tblauction.*, dbID=1 from tblAuction


das selbe auch für die jeweiligen tblUser ...
bei tblUser machst du als Key nicht nur die userID sondern einen kombinierten key über die userID und die dbID

somit gibt es dann

dbID=1 userID=1 name="user1234"
dbID=2 userID=1 name="user4567"



für die anzeige bzw. auswertung verknüpfst du dann anstatt nur über die userID auch über die dbID.


um das ganze auch zu beschleunigen machst du noch einen index in der tblAuction über die beiden felder userID und dbID.


ich hoffe ich konnte die Idee verständlich beschreiben.



Variante B: UserID anpassen
=========================================

da du ja alle daten in einer neuen datenbank zusammen faßt, kannst du beim anfügen der datenbanken unterschiedliche nummernkreise für die userID verwenden.

db1 = userID von 1.000.000 bis 1.999.999
db2 = userID von 2.000.000 bis 2.999.999
db3 = userID von 3.000.000 bis 3.999.999
etc.

d.h beim anfügen an die neue datenbank addierst du die "datenbanknummer x 1.000.000" auf die userID drauf.
so gehst du auch mit der userID der tabelle tblUser vor.


somit hast du dann wieder eindeutige userID-Nummern.
Antworten