Tabellen (MySQL) verknüpfen
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 155803
Url: https://administrator.de/forum/tabellen-mysql-verknuepfen-155803.html
Ausgedruckt am: 18.04.2025 um 09:04 Uhr
13 Kommentare
Neuester Kommentar
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
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
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:rechner :: id, standort, (id_pc) ...
adapter :: id, rechner_id, macadresse, (id_mac), ...
hosts :: id, rechner_id, gueltig_seit, name, ...
Die id_pc und id_mac kann man dann als \'vom Menschen benutzbare\' Zeichenkette nutzen.
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:
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
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:
INSERT INTO Tabelle1 (macadresse, id_mac) SELECT macadresse, id_mac FROM Tabelle2 where Tabelle2.id_mac NOT IN (SELECT Tabelle1.id_mac FROM Tabelle1)
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