:) jede Art von Hilfe wird geschätzt, aber es ist besser, nur eine Abfrage (außerhalb der Anwendungsregeln) Danke im Voraus
Über wie viele Daten sprechen wir? Es kann sein, dass Sie viele Daten haben, und da die where-Klausel am Ende des Abfrageprozesses ausgeführt wird, verbinden Sie große Datenmengen, bevor Sie sie filtern. In diesem Fall ist es besser, die Daten so schnell wie möglich zu filtern. Wenn Sie also die Daten von T1 in der ersten inneren Auswahl einschränken können, werden alle anderen Joins mit einer eingeschränkteren Datenmenge verknüpft. MYSQL und PHP: Zwei Tabellen - Gleiche IDs - Wie Datensätze miteinander verbinden?. Select from
(
Select * from t1 where t1_id = t1_value) t1
Inner join t2
on =...
wenn es nicht Massen von Daten ist; Überprüfen Sie, ob Ihre Indizes korrekt sind, und überprüfen Sie dann die Art des Servers; Indexfragmentierung; Festplattenwarteschlangen usw. Abhängig von Ihrer Version des SQL-Servers kann das einfache Einfügen Ihrer Abfrage in eine gespeicherte Prozedur einen großen Unterschied ausmachen. Versuchen Sie dies, nachdem Sie zuerst die anderen Optimierungen versucht haben.
Mysql Zwei Tabellen Verbinden Test
Sie können den Typ in einen äußeren Join ändern. Weitere Informationen finden Sie unter Erstellen von äußeren Joins (Visual Database Tools). Weitere Informationen
Erstellen von Abfragen mit Joins (Visual Database Tools)
Mysql Zwei Tabellen Verbinden Access
PHP-Code:
INSERT INTO target ( EmployeeID, EmployeeName) SELECT S. EmployeeName FROM Source AS S ON DUPLICATE KEY UPDATE target. EmployeeName
@erc
Das sieht im Grunde genau so aus, wie das, was ich suche
NUR: wie sage ich dem Statement, WELCHER KEY explizit verglichen werden soll? Oder sehe ich es nur nicht?? INSERT INTO target (EmployeeID, EmployeeName)
(- Setze "EmployeeID" und "EmployeeName" ein in Tabelle "target")
SELECT S. Mysql zwei tabellen verbinden access. EmployeeName FROM Source AS S
(wähle dazu aus der Tabelle "Source" die Spalten "EmployeeID" und "EmployeeName")
ON DUPLICATE KEY UPDATE target. EmployeeName
(und ersetze dabei im Falle eines DUPLICATE KEY die Spalte "EmployeeName" der Tabelle "target" mit dem Inhalt der Spalte "EmployeeName" aus der Tabelle "Source")
meint dieses Statement, dass der zu vergleichende (und dabei nicht zu verändernde) KEY nun "EmployeeID" sein soll? erstaunlich, wenn das so einfach wäre... Dabei seit: 07. 09. 2009
Beiträge: 8381
Du sagst dort gar nichts. Die Datenbank reagiert auf Verletzung einer UNIQUE Regel, dabei ist es egal, welches der Felder UNIQUE sein soll - sobald beim Einfügen ein bereits vorhandener Wert eingefügt werden soll, greift die Regel.
Mysql Zwei Tabellen Verbinden Online
SELECT t1_id, t2_name
FROM t1 LEFT JOIN t2 ON (t1_id = t2_id)
union
SELECT t1_id, t3_name
FROM t1 LEFT JOIN t3 ON (t1_id = t3_id)
In diesem Fall enthält das Ergebnis jedoch nicht 8 Spalten, sondern nur 1 Spalte. nicht sicher, ob das eine Option für Sie ist. Eine weitere Sache, die Sie in welcher Lösung Sie implementieren müssen, ist - erstellen Sie einen geeigneten Index für alle Ihre Tabellen. SQL-JOIN | So verknüpfen Sie relationale Datenbankentabellen - IONOS. Die beste Vorgehensweise für Indexspalten besteht darin, sie in der Spalte zu erstellen, die am häufigsten für Joins oder die Where-Klausel verwendet wird.
Gruß estebu
Info(r)Matiker
Dabei seit: 11. 04. 2009
Beiträge: 1254
Dabei seit: 01. 06. 2011
Beiträge: 674
Warum machst Du nicht zunächst ein update und dann ein insert? Muß das unbedingt in einer Abfrage laufen oder habe ich Dich falsch verstanden? Dabei seit: 11. 02. Manuelles Verknüpfen von Tabellen - Visual Database Tools | Microsoft Docs. 2009
Beiträge: 293
Nein, das wäre ziemlich gleichgültig, ob es gleichzeitig oder nacheinander passiert. Ich komme nur nicht darauf, wie ich den Befehl so beschreibe, dass nur bestimmte Spalten der Tabelle ein UPDATE bekommen sollen
und zwar auch nur DANN, wenn eine Spalte namens "nummer" den gleichen Inhalt in der Ziel- und Quell-Tabelle hat. Etwas so könnte ich es mir vorstellen:
UPDATE Zieltabelle SET Zieltabelle. Feld1 = (SELECT (Quelltabelle. Feld1) FROM Quelltabelle WHERE rgleichsfeld = rgleichsfeld)
Leider gibt MySQL folgende Meldung zurück: #1242 - Subquery returns more than 1 row
(was ja auch sehr logisch ist) - aber wie nur sage ich dem Statement, dass es dieses UPDATE für ALLE gefundenen Datensätze durchführen soll, deren Vergleichsfelder den gleichen Wert besitzen!?