Top-Themen

Aktuelle Themen (A bis Z)

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

Tabellen (MySQL) verknüpfen

Mitglied: Backspace

Backspace (Level 1) - Jetzt verbinden

25.11.2010 um 20:35 Uhr, 4857 Aufrufe, 13 Kommentare

Hallo zusammen,

habe erfolglos versucht zwei Tabellen (MySQL) über php zu verknüpfen:

"INSERT INTO Tabelle1 SELECT * FROM Tabelle2 where Tabelle2.BB NOT IN (SELECT Tabelle1.BB FROM Tabelle1);


beide Tabellen aus gleicher Datenbank:

Tabelle1:
id
AA
BB
C
D

Tabelle2:
AA
BB
E


Vorgaben:

-über "AA" und "BB" beide Tabellen verknüpfen.
-BB wird automatisch von Tabelle2 erzeugt (ID) und soll an Tabelle1 übergeben werden.


Danke im Voraus !

Gruß

Backspace
Mitglied: dog
25.11.2010 um 20:38 Uhr
"INSERT INTO Tabelle1 SELECT * FROM Tabelle2 where Tabelle2.BB NOT IN (SELECT Tabelle1.BB FROM Tabelle1);

Wie soll bei dem Query MySQL erkennen was wozu gehört, wenn nichtmal ein Mensch das kann?

Und diese Informationsarmut hilft auch nicht sonderlich...
Bitte warten ..
Mitglied: Backspace
25.11.2010 um 21:15 Uhr
Ich hoffe, so ist es klarer ersichtlich:

Tabelle1:
id
macadresse
id_mac
drive
datum

Tabelle2:
macadresse
id_mac


Mein Versuch dazu:
INSERT INTO Tabelle1 SELECT * FROM Tabelle2 where Tabelle2.id_mac NOT IN (SELECT Tabelle1.id_mac FROM Tabelle1)


Es geht darum, beide Tabellen über „macadresse“ und „id_mac“ zu verknüpfen.

„id_mac“ wird in Tabelle2 erzeugt.


Backspace
Bitte warten ..
Mitglied: dog
25.11.2010 um 21:19 Uhr
Was meinst du mit "verknüpfen"???
Deutlicher bitte.
Bitte warten ..
Mitglied: Backspace
25.11.2010 um 21:48 Uhr
Tabelle2 enthält alle bekannten Macadressen und die entsprechend zugeordneten id_mac.
1.Macadresse >> hat eine id_mac=1
2.Macadresse >> hat eine id_mac=2, usw.


Tabelle1 enthält ausgelesene Werte von verschiedenen Rechnern.

Die id_mac sollen eine Auswertung der gesammelten Werte aus Tabelle1 erleichtern, so braucht man für jeden Host nur noch die id_mac einzugeben, und nicht mehr die komplizierte Macadresse, will man die entsprechenden Werte eines bestimmten Hosts haben.

Das Ziel ist, dass nur noch die id_mac-Werte aus Tabelle2 auch in die id_mac-Spalte in Tabelle1 eingetragen werden, passend zu den Macadressen !!

Die Macadressen und die anderen Werte werden bereits per PHP in beide Tabellen eingetragen.

Danke

Backspace
Bitte warten ..
Mitglied: nxclass
25.11.2010 um 23:49 Uhr
01.
REPLACE INTO tabelle1 ( macadresse, id_mac ) SELECT macadresse, id_mac FROM tabelle2;
... damit das funktioniert muss über die Spalte macadresse ein UNIQUE (oder PRIMARY KEY) Schlüssel in tabelle1 gesetzt sein. Evtl. vorhandene id_mac Werte werden dann natürlich überschrieben.
Bitte warten ..
Mitglied: filippg
26.11.2010 um 02:45 Uhr
Hallo,

ich würde ein
SELECT * FROM Tabelle1 as t1 JOIN Tabelle2 as t2 ON t1.macadresse = t2.macadresee WHERE t2.id_mac = <gesuchterWert>
versuchen (wobei ich mir nicht sicher bin, ob MySQL das "as t..." mag, ich komme vom MS SQL).

Okay... nochmal die "Aufgabe" gelesen.
Was willst du eigentlich? Wann soll die "verknüpfung" erzeugt werden (dein Beispiel enthält ein INSERT, dann schreibst du aber was von Auswertung (was auf Query-Time, also Select deutet))? Und welchen Sinn macht Tabelle2 überhaupt, wenn alle ihre Informationen schon in Tabelle1 enthalten sind? Kann es sein, dass einfach dein Datenbank-Design Unsinn ist?

Gruß

Filipp
Bitte warten ..
Mitglied: Backspace
26.11.2010 um 07:11 Uhr
Hallo,

@Filipp:

Es geht erstmal nur darum, dass die id_mac aus Tabelle2 auch in Tabelle1 eingetragen werden (Verknüpfung) !

Das mit der Auswertung war nur eine Erklärung warum es die id_mac (Tabelle2) überhaupt gibt.

Zitat von mir:
"Das Ziel ist, dass nur noch die id_mac-Werte aus Tabelle2 auch in die id_mac-Spalte in Tabelle1 eingetragen werden, passend zu den Macadressen !!"


Die zweite Tabelle ist kein Unsinn, sondern hat sehr wohl ihre Berechtigung.

In ihr werden wie ich bereits erwähnt habe, alle bekannten Macadressen (von allen Hosts) aufgelistet, jede Macadresse bekommt in der zweiten Tabelle ihre eigene id_mac zugewiesen, diese wiederrum werden mit Tabelle1 verknüpft, um ein späteres manuelles Abfragen der unendlich vielen Werte aus Tabelle1 zu erleichtern.

Es ist viel einfacher nur nach einer id_mac=1 zu suchen, als eben eine solche Eingabe tätigen zu müssen: 00:0F:57:41:13:1E:CD

Es wäre sicherlich auch möglich, ohne eine zweite Tabelle auszukommen, indem ich z.B. die Tabelle1 mit einer weiteren Spalte "Hostname" erweitert hätte, jedoch kam das leider nicht in Frage, da sich Hostnamen im Laufe der Zeit eben ändern können. Das wiederrum gilt nicht für die primäre Macadresse, deswegen die Notwendigkeit einer zweiten Tabelle.


Backspace
Bitte warten ..
Mitglied: nxclass
26.11.2010 um 08:39 Uhr
Es ist viel einfacher nur nach einer id_mac=1 zu suchen, als eben eine solche Eingabe tätigen zu müssen: 00:0F:57:41:13:1E:CD
... ich nehme mal an, daß die \'id_mac\' dann irgendwo auf der Netzwerkkarte oder dem PC aufgeklebt ist.

Ist die Tabelle \'tabelle2\' nur für den Import der Daten in Tabelle \'tabelle1\' gedacht ? (dann würde das Sinn machen) - wenn nicht kann doch bei der Abfrage ein JOIN vollkommen ausreichen. Man muss dann nur über die Spalte \'id_mac\' in beiden Tabellen ein Index erzeugen.

weiteren Spalte \"Hostname\" erweitert hätte, jedoch kam das leider nicht in Frage, da sich Hostnamen im Laufe der Zeit eben ändern können.
Ich würde dann andere Tabellen anlegen:
01.
rechner :: id, standort, (id_pc) ... 
02.
adapter :: id, rechner_id, macadresse, (id_mac), ... 
03.
hosts :: id, rechner_id, gueltig_seit, name, ...
so kann man zu jedem Rechner/Gerät - Adapter zuordnen und auch mehrere Hosts abspeichern.
Die id_pc und id_mac kann man dann als \'vom Menschen benutzbare\' Zeichenkette nutzen.
Bitte warten ..
Mitglied: MadMax
26.11.2010 um 09:54 Uhr
Hallo Backspace,

den ganzen Wust da oben hab ich mir jetzt nicht durchgelesen, aber mal abgesehen davon, daß die Spalten der einen Tabelle nicht mit denen der anderen übereinstimmen, sieht der Befehl eigentlich ganz ok aus. Wenn Du die Spalten mit angibst sollte es also funktionieren:
01.
INSERT INTO Tabelle1 (macadresse, id_mac) SELECT macadresse, id_mac FROM Tabelle2 where Tabelle2.id_mac NOT IN (SELECT Tabelle1.id_mac FROM Tabelle1)
Allerdings kann es sein, daß Du noch andere Spalten in Tabelle1 füllen mußt, wenn eine der Spalten eben kein NULL zuläßt und keinen Standardwert hat. Außerdem gehe ich davon aus, daß die Datentypen der beiden Spalten in den beiden Tabellen übereinstimmen.

Hilfreich wäre bei solchen Fragen übrigens, wenn Du kurz schreiben könntest, was an Deinem Versuch erfolglos war:
- gab es einen Fehler?
- gab es keinen Fehler, aber keine Daten wurden eingelesen?
- ist der Rechner explodiert?
- ...

Gruß, Mad Max
Bitte warten ..
Mitglied: Backspace
26.11.2010 um 11:27 Uhr
Hallo Mad Max,

das Problem lag darin,dass eine Ellenlange Fehlermeldung mit "Zeitzone,..........." kam.

Mit Deiner Modifizierung, kommt keine Fehlermeldung mehr, jedoch wird bei id_mac in Tabelle1 leider auch kein Eintrag getätigt, bleibt also ohne Funktion.


@nxclass:

das id_mac steht auf keinem Rechner etc., es ist die von der Tabelle automatisch zugewiesene id.


Gruß

Backspace
Bitte warten ..
Mitglied: MadMax
26.11.2010 um 12:33 Uhr
Dann nehme ich mal an, daß da keine neuen Datensätze in Tabelle2 stehen. Um bestehende Daten zu aktualisieren heißt der Befehl bei MySQL meine ich:
01.
UPDATE Tabelle1, Tabelle2 SET Tabelle1.macadresse = Tabelle2.macadresse WHERE Tabelle1.id_mac = Tabelle2.id_mac
Gruß, Mad Max
Bitte warten ..
Mitglied: Backspace
26.11.2010 um 13:17 Uhr
Die Datensätze für die Tabellen werden sowohl von einer Shelldatei als auch einer Batchdatei ausgelesen und über PHP in die Tabellen eingetragen.

Ich habe die Shelldatei/Batchdatei immer manuell ausgeführt, um neue Datensätze zu erhalten, d.h. die Tabellen hatten immer neue Datensätze, hab beide Tabellen auch immer wieder komplett entleert und wieder neu befüllen lassen.

Gruß

Backspace


Nachtrag:

Hab´s jetzt damit versucht:

$sql_tabelle1 = "REPLACE INTO tabelle1 (id_mac) SELECT id_mac FROM tabelle2;";


>>>Ergebnis: die id_mac-Werte werden zwar eingetragen, jedoch in eigene Zeilen, also nicht zusammen mit den anderen Werten in eine gemeinsame Zeile.
Bitte warten ..
Mitglied: nxclass
26.11.2010 um 19:54 Uhr
REPLACE INTO tabelle1 (id_mac) SELECT id_mac FROM tabelle2
jedoch in eigene Zeilen, also nicht zusammen mit den anderen Werten
woher soll 'er' auch wissen wohin er die Eintrage sichern soll - die eindeutige Zuordnung mit der macadresse fehlt.
Bitte warten ..
Ähnliche Inhalte
Datenbanken

Inkonsistente MySQL Tabellen wiederherstellen

Frage von AndroxinDatenbanken1 Kommentar

Moin, aus "Gründen" musste ich diverse MySQL Datenbanken von einer formatierten Festplatte wiederherstellen. In der Regel waren auch noch ...

Datenbanken

MySQL - Tabulator in Tabelle einfügen

gelöst Frage von mabue88Datenbanken1 Kommentar

Hallo, wie kann ich in MySQL Workbench in eine Spalte vom Typ VARCHAR() ein Tabulator ('\t') als Zeichen einfügen? ...

Datenbanken

MySQL zwei Tabellen zusammenführen

gelöst Frage von RedBullmachtfitDatenbanken10 Kommentare

Hallo, ich habe in MySQL eine Artikel-Tabelle in welcher alle Artikel gespeichert sind sowie eine art_preise-Tabelle, in welcher nur ...

Datenbanken

MySQL - Feld aus anderer Tabelle hinzusummieren?

gelöst Frage von 1410640014Datenbanken5 Kommentare

Hallo, habe ein banales Problem und bin leider mit JOINS nicht gut bewandert. zwei simple Lagertabellen mit den Felder: ...

Neue Wissensbeiträge
Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 8 StundenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 14 StundenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 1 TagMicrosoft Office4 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Humor (lol)

Warum man sein Gast-WLAN nicht beliebig nennen sollte

Erfahrungsbericht von Henere vor 2 TagenHumor (lol)5 Kommentare

Servus, mal was aus dem Alltag. Zu Hause. Eigentlich wollte ich nur einen weiteren WLAN-AP ins Netz bringen, damit ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid15 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Windows 10
Windows 10 Startmenü-Einstellungen Systemweit festlegen
Frage von flotautWindows 1013 Kommentare

Guten Morgen liebe Admins, wir möchten bei uns am Lehrstuhl demnächst auf Windows 10 umsteigen. Wir installieren unsere PC's ...

LAN, WAN, Wireless
OpenVPN Client Fehlermeldungen
Frage von chris84LAN, WAN, Wireless12 Kommentare

Hallo Zusammen, wir nutzen seit kurzem einen neuen Router und den OpenVPN Client. Die VPN Verbindung klappt; allerdings kommen ...