0

I have problem with my update query. I need to make it works :P

That procedure select all duplicated records ( need to be recreated to select and update value)

DELIMITER $$
USE `bgw_r`$$
DROP PROCEDURE IF EXISTS `tpl_pobierz_dodane`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `tpl_pobierz_dodane`(puzytkownik VARCHAR(50), psesja VARCHAR(50))
BEGIN
SELECT a.`id` AS idd FROM `paliwa_temp` AS a INNER JOIN `paliwo_fv` AS b 
ON (a.`numerRejestracyjny` = b.`numer_rejestracyjny`)
WHERE a.`sesja` = psesja AND b.`data_tankowania` = a.`dataTankowania` AND a.`iloscPaliwa` = b.`wydano_litry`; # GROUP BY id
END$$
DELIMITER ;

or create other procedure that update that values:

DELIMITER $$
USE `bgw_r`$$
DROP PROCEDURE IF EXISTS `tpl_ustaw_jako_duplikaty`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `tpl_ustaw_jako_duplikaty`(puzytkownik VARCHAR(50), psesja VARCHAR(50))
BEGIN
UPDATE a
    SET a.`duplikat` = "true"
    FROM `paliwa_temp` AS a
    INNER JOIN `paliwo_fv` AS b
    ON( b.`numer_rejestracyjny` = a.`numerRejestracyjny`)
    WHERE a.`sesja` = psesja AND b.`data_tankowania` = a.`dataTankowania` AND a.`iloscPaliwa` = b.`wydano_litry`;
END$$
DELIMITER ;

Error in update query: Error Code: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `paliwa_temp` as a
    INNER JOIN `paliwo_fv` as b
    on( b.`numer_rejestracyjny' at line 5

No idea why :/

Rafał Figura
  • 5,428
  • 1
  • 15
  • 20

2 Answers2

0

The correct join update statement should be as

update paliwa_temp a
INNER JOIN `paliwo_fv` AS b
ON( b.`numer_rejestracyjny` = a.`numerRejestracyjny`)
SET a.`duplikat` = "true"
WHERE a.`sesja` = psesja 
AND b.`data_tankowania` = a.`dataTankowania` 
AND a.`iloscPaliwa` = b.`wydano_lit
Abhik Chakraborty
  • 44,654
  • 6
  • 52
  • 63
0

The syntax of update with join must be:

UPDATE  `paliwa_temp` AS a
INNER JOIN `paliwo_fv` AS b
    ON( b.`numer_rejestracyjny` = a.`numerRejestracyjny`)
    SET a.`duplikat` = "true"
          WHERE a.`sesja` = psesja AND b.`data_tankowania` = a.`dataTankowania` AND a.`iloscPaliwa` = b.`wydano_litry`;
Jens
  • 67,715
  • 15
  • 98
  • 113