J'ai deux tables DailyVisits
et TotalSum
Mon objectif est d'ajouter DailyVisits
à TotalSum
avec une procédure stockée/requête que je vais exécuter à la fin de la journée.SQL - Insérer ou mettre à jour avec un résultat d'une autre table
DailyVisits
UserId,PageId,Visits
1,1,32
2,123,34
4,12,213
5,1,1
TotalSum
UserId,PageId,TotalVisits
1,1,300
1,41,2
3,12,213
5,1,653
et ainsi de suite.
J'ai essayé deux approches mais je n'arrive pas à trouver une solution. Ci-dessous mes requêtes pour y parvenir, si vous avez une autre suggestion/requête assez simple pour comprendre, j'apprécie votre aide.
Approach1:
delimiter $$
CREATE PROCEDURE UPSERT_DAILYSUM()
BEGIN
IF EXISTS (SELECT Id, PageId FROM DailyVisits) THEN
UPDATE TotalSum TotalVisits = TotalVisits + (SELECT Visits FROM DailyVisits);
ELSE INSERT INTO TotalSum (UserId,PageId,TotalVisits)
VALUES (SELECT Id,PageId,Visits);
END IF
END $$
delimiter ;
approche2:
INSERT INTO TotalSum (UserId,PageId,TotalVisits) VALUES(SELECT * FROM DailyVisits)
ON DUPLICATE KEY UPDATE (PageId,TotalVisits)
VALUES(SELECT PageId,Visits FROM DailyVisits)
Voilà ce que je me bats avec: Comment puis-je obtenir des valeurs distinctes lorsque la clé n'existe pas? Puis-je utiliser RIGHT JOIN
(ou LEFT JOIN
) et vérifier les valeurs NULL
, puis ajouter le tableau de droite (ou de gauche)?
cette aide? http://stackoverflow.com/questions/11883237/insert-or-update-table-from-another-table-with-composite-primary-key –
Oh oui, oui! Je n'ai jamais pensé à faire deux mises à jour et à les insérer séparément. Merci! –
s'il vous plaît donnez-moi un upvote si ma réponse vous a aidé –