INSERT
INTO `table` (`LOGIN_ID`, `Start`, `End`, `Session_ID`)
VALUES (:loginId, :start, :end, :sessionId)
ON DUPLICATE KEY UPDATE `End` = GREATEST(`End`, :end)
SELECT `s`.*
FROM `learned_sciences` AS `l`
JOIN `science_branch` AS `b` ON `b`.`science_id` = `l`.`science_id`
JOIN `sciences` AS `s` ON `s`.`id` = `b`.`open_science_id`
WHERE `l``user_id` = :iserId
AND `s`.`id` NOT IN (
SELECT `science_id`
FROM `learned_sciences`
WHERE `user_id` = :userId
)