Я пытаюсь сделать вставку в PHP из SELECT, как показано в этом скрипте SQL HERE.php mysql insert from select fires error
Мой код:
$sql2 .= "INSERT INTO $tableBackup (Fahrer, Datum, Baustelle, Arbeitsbeginn, Arbeitsende, Projektbeginn, Projektende, Arbeitszeit, Projektzeit, Pausenzeit, Reine AZ, Sonntag, Feiertag, Urlaub, Krank, Stundensatz, Auslöse, Gesamt)";
$sql2 .= "SELECT t.*,";
$sql2 .= "sum(HOUR(TIMEDIFF(STR_TO_DATE(Arbeitsbeginn, '%d.%m.%Y %H:%i:%s'), STR_TO_DATE(Arbeitsende, '%d.%m.%Y %H:%i:%s')))) AS ARBEITSZEIT, sum(HOUR(TIMEDIFF(STR_TO_DATE(Projektbeginn, '%d.%m.%Y %H:%i:%s'), STR_TO_DATE(Projektende, '%d.%m.%Y %H:%i:%s')))) AS Projektzeit";
$sql2 .= "FROM (SELECT DriverName AS Fahrer, Datum,Baustelle,Arbeitsbeginn,Arbeitsende,Projektbeginn,Projektende";
$sql2 .= "FROM (SELECT DRIVERNAME,left(`datetime`, 10) as Datum,,GROUP_CONCAT(IF(ACTIONTEXT = 'PB', AREA, NULL)) AS 'Baustelle',GROUP_CONCAT(IF(ACTIONTEXT = 'Arbeitsbeginn', DATETIME, NULL)) AS 'Arbeitsbeginn',GROUP_CONCAT(IF(ACTIONTEXT = 'Arbeitsende', DATETIME, NULL)) AS 'Arbeitsende',GROUP_CONCAT(IF(ACTIONTEXT = 'PB', DATETIME, NULL)) AS 'Projektbeginn',GROUP_CONCAT(IF(ACTIONTEXT = 'PE', DATETIME, NULL)) AS 'Projektende'";
$sql2 .= "FROM geoImportRoot GROUP BY DRIVERNAME) A CROSS JOIN (SELECT 1 AS n UNION ALL SELECT 2) n) t";
$sql2 .= "GROUP BY Fahrer, Datum;";
$this->DB->Execute($sql2);
И структура новой таблицы:
`geoEdit` (
`ID` int(255) NOT NULL AUTO_INCREMENT,
`Fahrer` text NOT NULL,
`Datum` text NOT NULL,
`Baustelle` text NOT NULL,
`Arbeitsbeginn` text NOT NULL,
`Arbeitsende` text NOT NULL,
`Projektbeginn` text NOT NULL,
`Projektende` text NOT NULL,
`Arbeitszeit` text NOT NULL,
`Projektzeit` text NOT NULL,
`Pausenzeit` smallint(10) NOT NULL DEFAULT '1',
`Reine AZ` int(255) DEFAULT NULL,
`Sonntag` text,
`Feiertag` text,
`Urlaub` text,
`Krank` text,
`Stundensatz` int(10) NOT NULL DEFAULT '10',
`Auslöse` int(255) DEFAULT NULL,
`Gesamt` int(255) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Это не работает. Перед запуском этого скрипта я делаю INSERT с данными в корневую таблицу geoImportRoot.
Определение ** Это не работает. ** и кстати вы используете 'INSERT' но не вставляя любой' VALUES' –
@ SebastianRush, вы знаете, что у вас может быть несколько строк в инструкции sql, нет необходимости конкатенировать/угадать ваш запрос. также возможно исправить '$ sql2. =" INSERT' to '$ sql2 =" INSERT' –
Пожалуйста, сообщите об ошибке. Кроме того, при конкатенации строк обязательно включайте пробел, если необходимо, например, вы пропускаете пробел между projektende и FROM на следующей строке. – Eelke