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

Tabellen (MySQL) verknüpfen

Frage Entwicklung Datenbanken

Mitglied: Backspace

Backspace (Level 1) - Jetzt verbinden

25.11.2010 um 20:35 Uhr, 4696 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows Server
Jnlp Endungen mit Java automatisch verknüpfen über GPO (10)

Frage von staybb zum Thema Windows Server ...

PHP
PHP MySQL Login (7)

Frage von Yanmai zum Thema PHP ...

Webbrowser
gelöst Daten in entfernte Mysql DB schreiben (3)

Frage von nullacht15 zum Thema Webbrowser ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...