Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zwei Tabellen zusammenführen und Bezüge zueinander herstellen

Frage Microsoft Microsoft Office

Mitglied: quba

quba (Level 1) - Jetzt verbinden

11.02.2011 um 08:31 Uhr, 5770 Aufrufe, 6 Kommentare

Hallo zusammen,

ich habe gerade Probleme mit einer Aktualisierungsabfrage.
Ist etwas komplizierter aber ich versuche es mal zu beschreiben:

Es sind zwei Tabellen (PC und Bildschirm) gegeben die in eine einzelne Tabelle (devices) überführt werden sollen.
Die Geräte in den zwei Ausgangstabellen habe eine eindeutige Inventarnummer (IID) sowie jeweils eine unique ID (PCID und BSID). Jeder Bildschirm ist einem PC zugordnet, d.h. die entsprechende PCID steht in einer Spalte in der Tabelle Bildschirm. Es kann auch sein, dass ein PC zwei Bildschirme hat, dann kommt eine PCID in zwei verschiedenen Einträge der Tabelle Bildschirm vor.

Die neue Tabelle devices beinhaltet wie gesagt beide Geräte. Ziel ist es die Bildschirme den PCs zuzuordnen (Spalte bs1 und bs2).
Ich habe jetzt schon eine Abfrage die mir zumindest anzeigt welche Inventarnummer (PC) welcher Inventarnummer (BS) zugeordnet ist.

Nur wie bekomme ich es hin, dass die neue unique ID der Tabelle devices von einem BS entsprechend in der Spalte bs1 oder bs2 des PCs steht?

Bsp:

Tabelle Bildschirm:
BSID | NAME | IID | PCID
1 | BS001 | 289 | 5
2 | BS002 | 290 | 5

Tabelle PC:
PCID | NAME | IID
5 | PC001 | 26

neue Tabelle devices:
ID | IID | NAME | BS1 | BS2
1 | 289 | BS001
2 | 290 | BS002
3 | 26 | PC001

Ziel ist dem PC001 in der Spalte BS1 und BS2 jeweils die ID der BS einzufügen.
Also quasi:

neue Tabelle devices:
ID | IID | NAME | BS1 | BS2
1 | 289 | BS001
2 | 290 | BS002
3 | 26 | PC001 | 1 | 2


Ich habe jetzt wie gesagt schon eine Abfrage die die Zuordnung der Inventarnummern zueinander hat, denn dies ist in der Zieltabelle ja mein einzigster Bezug zueinander.

IID-PC | IID-BS
26 | 289
26 | 290

Nur wie weitermachen???

Klingt ein wenig kompliziert. Und fragt nicht wieso ich aus zwei Tabellen eine machen will, es ist einfach so vorgegeben und gewollt Smile

Vielen Dank schonmal für Hinweise oder Tipps.
Grüße
quba
Mitglied: StefanKittel
11.02.2011 um 08:36 Uhr
Moin,

wenn ich das richtig sehe ich Dein Problem eigentlich nur der 2. Bildschirm.
Sonst machst Du eine normale Abfrage mit Bezug und erhällst eine Liste mit allen Feldern, aber pro PC und BS Kombination einen Eintrag.
Also bei einem PC mit zwei BS auch 2 Einträge.

Mit einer Abfrage würde das nur gehen wenn Du die 2. BS in eine 3. Tabelle ausgliederst und auch in der Abfrage hinzufügst.
Sonst nur per VBA (ist aber nicht so kompliziert).

Stefan
Bitte warten ..
Mitglied: quba
12.02.2011 um 09:31 Uhr
Moin,

danke erstmal für die superschnelle Reaktion gestern!

Irgendwie ist mir das ja klar wie Du das meinst, aber ich glaube ich stehe auf dem Schlauch...
Hättest Du mir vllt. ein Code Beispiel wie Du das lösen würdest?

Meine Hilfstabelle habe ich ja schon mit PCIID und BSIID. Nur benötige ich dann noch die neue BSid um diese dem PC mit der PCIID unter bs1 bzw bs2 hinzuzufügen....

Danke für Deine Hilfe

quba
Bitte warten ..
Mitglied: Biber
12.02.2011 um 21:26 Uhr
Moin quba,

Rückfragen:
Du hast ein gewisses Überangebot an Primarykey-Kandidaten.
In der "alten" Tabellen-Welt sind eigentlich die Inventarnummer IID wie auch die "BSID" und die "PCID" eindeutig.
Und jeweils zu zweit pro Tabelle.

In der "neuen" Welt mit einer Tabelle weniger führst du eine neue sinnfreie "ID" ein... wieder zusätzlich zur eindeutigen Invntarnummer.

Und die Bildschirme, die bisher verknüpft sind über die alte "PCID" mit einem PC...
Diese "PCID" taucht im neuen Modell ja nicht mehr auf.

Also:
  • ist die Inventarnr IID jetzt der eindeutige PK für alle PCs und Bildschirme?
  • wenn ja, wozu dient denn die neue "ID"???
  • wenn nein - in welchen Fällen ist die Eindeutigkeit verletzt?

Grüße
Biber
Bitte warten ..
Mitglied: quba
13.02.2011 um 22:07 Uhr
Grüß Dich Biber,

richtig, die IID gibt es immer nur einmal, jedoch kann es sein, dass einige Geräte aus der Historie keine Inventarnummer besitzen.
Aus diesem Grund war auch bisher die Verbindung über die PCID und BSID hergestellt.

Daher benötige ich auch weiterhin eine neue ID

Die IID ist zwar auch eindeutig jedoch in der neuen Tabelle quasi "nur" als Datenfeld zu behandeln.

Was meinst Du mit "Eindeutigkeit verletzt" ?

Danke und Grüße
quba
Bitte warten ..
Mitglied: Biber
13.02.2011 um 22:55 Uhr
Moin quba,

mit "Eindeutigkeit verletzt" meinte ich genau den Fall, ob denn in dieser Datensammlung auch Geräte OHNE Inventarnur erfasst sind.
[ Ist ja die Frage, was denn nun das Ziel dieser Tabllen sein soll - bei einer "nachträglichen Erfassung" kann ja gelten:
"Ich erfasse nur Geräte mit Inventarnummer und in dieser Liste auch keine, die noch keine Inventarnummer haben."]

Kurz angemerkt - meine Meinung zu dem Thema ist:
Wenn ihr euch für den Weg einer Datenbank-Erfassung entschieden habt, dann müssen die Daten konsistent sein.
Bzw. alle Ausnahmen/Altlasten/Sonderfälle draussen bleiben.

Wenn der Schwerpunkt nicht die Konsistenz ist, sondern "der Überblick".... dann nehmt Excel oder Vergleichbares.

Deinem Datenmodell traue ich schon aufgrund der mehrfachen Unique-Keys je Tabelle (die aber manchmal auch leer sein dürfen) keine 10cm weit.

Beispiel - Mit der folgenden Abrage aus obigen Beispieltabellen könntest du deine neue "devices".Tabelle initial füllen:
01.
SELECT  PC.PCId as OldPcOrBSID, PC.name, PC.IID, min( Bildschirm.BSid) as BS1, 
02.
           Iif(max( Bildschirm.BSID)>min(Bildschirm.BSID), max(Bildschirm.BSid), NULL ) as BS2 
03.
FROM PC left JOIN Bildschirm ON PC.PCID = Bildschirm.PCID 
04.
group by PC.PCID, PC.name, PC.IID 
05.
UNION select B.BSID, B.name, B.IID,  null, null from Bildschirm b;
Diese Abfrage (hier nur als reines SELECT, also gefahrlos ausführbar) liefert alle Felder für die neue "devices",
ausgenommen die neue Phantasie-ID (die ja vermutlich wieder so eine tolle "Autowert"-Klamotte sein soll).
Die wird aber ja ohnehin automatisch vergeben.

Zusätzlich kommt in dieser Abfrage noch die alte "PCID/BSID" mit... an der hängt ja eigentlich die Zuordnung von BS1/BS2 zu PC(s).

Problem--> genau diese alte -nennen wir es scherzhaft "Fremdschlüsselbeziehung" ist in der neuen Tabellenstruktur nicht mehr da.
Und die neue "eindeutige ID" ist ja wirklich absolut wertlos - dadurch sind zwar alle Datensätze "verschieden",
aber ob die "inhaltlich ungleich" sind, das kann diese ID nicht zusichern.

Ich würde Excel nehmen für solche Daten - die interessieren doch auch nicht 5000 Anwender, die da zeitgleich drauf aktualisieren.
Sondern einen verträumten Admin, der zweimal im Monat da einen Update durchführt.

Grüße
Biber
Bitte warten ..
Mitglied: quba
14.02.2011 um 08:19 Uhr
Moin Biber,

danke für deine Erklärung/Meinung und Hilfe zu dem Thema.

Ich muss Dir schon recht geben und evtl. das ganze wirklich nochmal überdenken

Wollte irgendwie einen schnellen unkomplizierten Weg wählen, der mir aber im nach hinein doch ein wenig zu umständlich erscheint.

Danke erstmal für das Beispiel, einen schönen Tag und Grüße
quba

Edit: Mittlerweile habe ich es mit insgesamt 4 Hilfstabellen geschafft mein gewünschtes Ergebnis zu erreichen.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
DSL, VDSL
OpenWRT VDSL VOIP Internetverbindung herstellen (3)

Frage von danielr1996 zum Thema DSL, VDSL ...

Batch & Shell
gelöst Dateien zusammenführen inkl. finden von doppelten Einträgen (3)

Frage von miczar zum Thema Batch & Shell ...

Google Android
Pixel kann kein VPN zur Fritzbox herstellen! Finger weg von Google Pixel! (5)

Frage von MyApps2GO.de zum Thema Google Android ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...