Exercices (requêtes de modification) sur la base TeniRaq

La « pensée » du Dimeurzh, d'an 17 a viz Genver 2017 , 20h15m25s :
The generation of random numbers is too important to be left to chance.
  1. Le dimanche 16 septembre 2007, le joueur de badge 142 a battu le joueur 271, à 15h00, par 7 à 2. Enregistrer ce match dans la table matchs. Mettre à jour la table joueurs.
    INSERT INTO matchs VALUES (  1+(SELECT MAX(codematchs) FROM matchs),
     142,271,
     '16/09/2007',15,
     7,2 ) ;
    UPDATE joueurs SET  pointsdefis=pointsdefis+(7-2)+1
     WHERE numbadge=142 ;
    UPDATE joueurs SET  pointsdefis=pointsdefis+1
     WHERE numbadge=271 ;
  2. Le dimanche 23 septembre 2007 à 17h00 le joueur de badge 47 (né le 30/09/1959) et le joueur 102 (né le 04/10/1940), ont fait match nul, 4 à 4. Enregistrer ce match dans la table matchs. Mettre à jour la table joueurs.
    INSERT INTO matchs VALUES (  1+(SELECT MAX(codematchs) FROM matchs),
     47,102,
     '23/09/2007',17,
     4,4 ) ;
    UPDATE joueurs SET  pointsdefis=pointsdefis+1
     WHERE numbadge=47 ;
    UPDATE joueurs SET  pointsdefis=pointsdefis+1
     WHERE numbadge=102 ;
  3. Un adhérent, muni de son badge qui porte le numéro 15, vient d'entrer dans le club aujourd'hui. Enregistrer cette entrée.
    INSERT INTO acces VALUES(5,NOW()) ;
  4. L'adhérent de badge 25 réserve pour demain un créneau de jeu à 10h sur le court B, pour lui et pour l'adhérent de badge 58. Enregistrer cette réservation.
    INSERT INTO reservations VALUES(
     1+(SELECT MAX(codereservations) FROM reservations),
     25,58,'B',CURRENT_DATE+1,10,NULL
     ) ;
  5. Des erreurs se sont produites dans le calcul des points défis. Refaire les calculs et mettre à jour.
    UPDATE  joueurs
    SET  pointsdefis  =  COALESCE(  (SELECT  SUM(scorevainqueur-scoreperdant+1)
             FROM matchs
             WHERE refvainqueur=numbadge)
           ,0)
       +    (SELECT  COUNT(*)
             FROM matchs
             WHERE refperdant=numbadge) ;
  6. Le joueur dont le badge est 65 vient de payer sa cotisation. Mettre à jour la table joueurs avec une requête qui pourra être appliquée sans se soucier de l'état actuel de son adhésion
    UPDATE  joueurs
    SET  inscritjusque =  CASE  WHEN  inscritjusque<CURRENT_DATE
           THEN CURRENT_DATE+'1 year'::INTERVAL
         ELSE  inscritjusque+'1 year'::INTERVAL
       END
    WHERE  numbadge=65
  7. Une erreur s'est produite dans la table villes : il y a deux enregistrements pour la ville de Lesquin, l'un avec le code postal (59810), l'autre avec le code postal 59610 (c'est une erreur). Corriger.
    UPDATE  voiries
    SET  codepostal='59810'
    WHERE  codepostal='59610';
    DELETE FROM  villes
    WHERE  codepostal='59610' ;
Dernière modification : 25/8/2016