Die Abfrage ist erfolgreich (ansonsten mysql_query()
würde nicht true
zurückgeben ), fügt jedoch keine Zeilen ein. Die einzige Erklärung dafür ist, dass SELECT
Teil ergibt eine leere Menge. Das liegt am LEFT JOIN
gibt Zeilen zurück, die in t1
vorhanden sind aber nicht in t2
, aber die Auswahl erfolgt auf NULL
Zeilen in t1
.
Das sollte funktionieren:
INSERT teamshalf
(`yearID` , `lgID` , `teamID` , `Half` ,
`divID` , `DivWin` , `Rank` , `G` , `W` , `L`)
SELECT DISTINCT t1.`yearID` , t1.`lgID` , t1.`teamID` ,
t1.`Half` , t1.`divID` , t1.`DivWin` , t1.`Rank` , t1.`G` , t1.`W` , t1.`L`
FROM `teamshalf_TEMP` t1 LEFT JOIN `teamshalf` t2 ON t1.`yearID` = t2.`yearID`
AND t1.`lgID` = t2.`lgID` AND t1.`teamID` = t2.`teamID`
AND t1.`Half` = t2.`Half` AND t1.`divID` = t2.`divID`
AND t1.`DivWin` = t2.`DivWin` AND t1.`Rank` = t2.`Rank`
AND t1.`G` = t2.`G` AND t1.`W` = t2.`W` AND t1.`L` = t2.`L`
WHERE t2.`yearID` IS NULL
Beachten Sie auch, dass mysql_query()
ist veraltet. Und Sie sollten Spalten, die Daten enthalten müssen, als NOT NULL
deklarieren , also NULL
wird nicht akzeptiert. Und Ihre Abfrage wird langsam sein, weil Sie keine Indizes verwenden.