Sous-requêtes synchronisées

Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Apprendre MySQL 8.0 par la pratique
Revoir le teaser Je m'abonne
Transcription

Cette leçon fait partie de la formation
89,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

DescriptionProgrammeAvis

Cette leçon fait partie de la formation
89,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

Être capable de créer et exploiter une base de données MySQL au quotidien de manière autonome.

Cette formation a été conçue à destination d'un public sans connaissances préalables sur les bases de données, avec l'ambition de transmettre les notions fondamentales permettant d'entrer sereinement et efficacement dans l'univers des bases de données, et d'exploiter MySQL au quotidien de manière autonome.

Elle permet de tirer parti de logiciels de qualité conçus spécialement pour travailler avec les bases de données : MySQL Workbench et Datagrip.

Elle met l'accent sur la pratique, et comprend de nombreuses démonstrations, mises en situations, exercices corrigés et commentés.

Elle met à disposition en ressources téléchargeables 3 bases de données portant sur des thèmes variés (médicaments vétérinaires, sécurité routière, prénoms), les scripts SQL des démonstrations les plus longues, et intègre un code promotionnel vous permettant de bénéficier d'une prolongation à 4 mois de la période d'essai gratuite de Datagrip.

Voir plus
Dans cette vidéo, on va s'intéresser aux sous-requêtes synchronisées, qui sont en fait une forme particulière de sous-requêtes, comme on en a vu précédemment. On a déjà utilisé des sous-requêtes dans la clause FROM de nos instructions pour créer des tables dérivées, ou dans la clause WHERE pour créer des jointures procédurales. Ici, c'est un petit peu particulier, on va les utiliser à nouveau dans la clause WHERE, mais il y aura quelques différences, et je vous explique en quoi ça consiste. Donc, je vous invite à ouvrir un fichier que vous avez à disposition, qui s'appelle Sous-requêtes synchronisées, et dans lequel je vous explique comment mettre en œuvre ce genre de requêtes et à quoi cela peut servir. Donc, pour le faire, je pars d'un exemple. Je vous propose d'aller chercher dans la base de données les laboratoires qui ont été les premiers à produire un médicament contenant un principe actif pour la première fois. Et il nous faut pour chaque labo le nom aussi de la substance qui est concernée, le médicament qui la contient et la date à laquelle ce médicament a eu son autorisation de mettre sur le marché. On a deux manières de procéder, dans les deux cas, je vais vous montrer comment faire avec une sous-requête synchronisée. On va commencer par utiliser une jointure interne pour réunir les tables qui contiennent les informations qui nous intéressent. En l'occurrence, il nous faut la table Médoc qui contient les informations sur les médicaments, les titulaires d'AMM, les dates d'AMM, et puis il nous faut aussi la table Substances qui contient les informations sur les substances et la table Médoc Substances qui permet d'effectuer la jointure entre les deux. Donc ça, ça n'a rien de nouveau, on l'a déjà fait, donc on fait cette requête ici qu'on exécute, donc si je la sélectionne et que je l'exécute, par exemple, on a ici les médocs, les titulaires, les substances et les dates d'AMM. Notons qu'on a bien entendu des duplications parce que certains médicaments contiennent de nombreuses substances. Ensuite, on va stocker le résultat de cette requête temporairement dans une CTE qu'on va pouvoir réutiliser par la suite. Et c'est là qu'on va utiliser une sous-requête synchronisée. C'est-à-dire qu'on veut, à partir de cette CTE, récupérer un certain nombre d'informations et en particulier les enregistrements pour lesquels la date d'AMM est inférieure aux dates d'AMM des autres médicaments qui contiennent la même substance. Donc ça veut dire qu'en fait, dans cette sous-requête qui se trouve ici, on va faire appel aux données de la requête de niveau supérieur qu'on appellera requête mère. La référence se fait grâce à des aliases de table qu'on a utilisées ici. Donc C1 pour la requête de niveau supérieur, on pourrait l'appeler la requête mère, et C2 pour celle de niveau interne qu'on appelle dans ce cas la sous-requête synchronisée. Elle est synchronisée parce qu'en fait, on a ici, dans la clause WHERE de cette sous-requête synchronisée, une référence à la requête mère. Donc on veut, du coup, dans cette sous-requête synchronisée, sélectionner les enregistrements pour lesquels la substance est la même que dans le niveau supérieur et le médicament différent. Et parmi ces enregistrements, on veut récupérer uniquement la date. Enfin, pour obtenir notre résultat, il faut que la date de niveau supérieur soit inférieure aux dates de tous les médicaments qui contiennent cette substance. Si j'exécute cette instruction, j'ai ici les colonnes que j'avais envisagé de projeter, à savoir l'année, la substance, le titulaire et le médicament. Par ordre d'année croissant, on part de 1979 jusqu'à 2023. Et donc on a, par exemple, ici l'oxyclosanide. Eh bien, l'osanil suspension a été le premier médicament contenant de l'oxyclosanide et il était produit par Intervet. Voilà, on a une certaine... on a une liste de ces substances-là. Donc on voit qu'il y a des médicaments qui sont assez anciens. On voit par exemple l'ivermectine. Ça existe depuis 1981 dans une présentation commerciale. Donc c'est des médicaments qu'on utilise toujours aujourd'hui. Maintenant, il y a une autre manière de faire la même chose. C'est-à-dire qu'au lieu d'utiliser ce type de restriction, eh bien on va en utiliser un autre. On va utiliser « where not exist ». Alors, le principe est relativement le même, sauf qu'ici, en fait, on veut que la sous-requête ne renvoie aucun enregistrement. Et du coup, on va sélectionner dans cette sous-requête les médicaments qui contiennent la même substance qui sont différents du médicament de niveau supérieur et pour lesquels la date d'AMM est inférieure ou égale à celle du médicament de niveau supérieur. En fait, ça revient au même. Globalement, on dit qu'on veut sélectionner tous les médicaments pour lesquels la date d'AMM est la première d'une série d'AMM de médicaments. Si j'exécute cette requête, encore une fois avec l'ACTE, eh bien j'obtiens exactement le même résultat. On a ici utilisé « where not exist ». Il faut savoir aussi qu'on a la possibilité d'utiliser « exist » tout court, auquel cas, on aura pour objectif de s'assurer qu'il existe bien des enregistrements qui répondent à la condition qu'on a spécifiée à l'intérieur de la sous-requête synchronisée. Ce qu'il faut avoir en tête, c'est que ces traitements peuvent être relativement lourds puisque la sous-requête synchronisée va s'exécuter pour chaque enregistrement de niveau supérieur. C'est-à-dire que si dans ma table, ici, MEDOC, j'avais 2 millions de lignes, eh bien on aurait de exécuter la sous-requête synchronisée 2 millions de fois. Puisqu'à chaque fois qu'on a un enregistrement dans la table mère, on exécute la sous-requête synchronisée puisqu'on utilise les données de niveau supérieur dans la sous-requête synchronisée. C'est un petit peu compliqué, donc je vous propose un exercice de mise en application des sous-requêtes synchronisées tout de suite. A tout de suite.

Programme détaillé

Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Unions 06:39
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Nos dernières formations Code & Data
  • Nouveau
    Maîtriser FlutterFlow - De l'Idée à l'Application
    Découvrir
    Cette formation en FlutterFlow est l'outil idéal pour tout développeur souhaitant créer des applications mobiles robustes et interactives sans coder de manière complexe. Grâce à des modules complets et structurés, vous apprendrez à utiliser FlutterFlow et Firebase, à sécuriser vos données, à concevoir des interfaces utilisateur élégantes et à intégrer des API telles qu'OpenIA. Rejoignez-nous pour transformer vos idées en applications innovantes et performantes.
    4h08 57 leçons
  • Nouveau
    Webflow - Créer la landing Page d'OpenAI
    Découvrir
    À l'issue de cette formation, les participants seront capables de créer de manière autonome une landing page sophistiquée, similaire à celle d'OpenAI, en utilisant les fonctionnalités avancées de Webflow pour le design responsive et les interactions.
    3h48 19 leçons
  • Apprendre Svelte 3 et SvelteKit 1.0
    Découvrir
    Créez des applications web modernes et ultra-rapides avec notre formation "Apprendre Svelte 3 et SvelteKit 1.0". Rejoignez-nous et devenez un expert du développement JavaScript ! 🚀 #Svelte #SvelteKit #DéveloppementWeb
    7h42 77 leçons
  • Apprendre Vue JS 3
    Découvrir
    Apprenez à créer des applications web modernes avec notre formation "Apprendre Vue JS 3". Rejoignez-nous et maîtrisez ce puissant framework JavaScript ! 🚀 #VueJS #FormationWeb #Développement
    11h47 91 leçons
  • Gratuit
    Apprendre ChatGPT
    Découvrir
    Ce cours vise à fournir une compréhension approfondie de l'intelligence artificielle, en se concentrant sur l'utilisation pratique de ChatGPT et DALL-E. Les participants découvriront comment l'IA peut transformer des domaines variés tels que le marketing, le développement web, et le design graphique. Le contenu couvre les bases de l'IA, l'art de créer des prompts efficaces, l'utilisation de plugins avancés, et le codage assisté par IA. Des projets pratiques permettront d'appliquer ces connaissances dans des scénarios réels. Destiné aux professionnels de la technologie, aux marketeurs, aux développeurs, et à toute personne intéressée par l'IA, ce cours est une opportunité d'acquérir des compétences innovantes et applicables dans divers contextes professionnels et créatifs. Les prérequis incluent une compréhension basique de l'informatique et un intérêt pour l'IA. Le cours promet une aventure d'apprentissage enrichissante, ouvrant de nouvelles perspectives dans l'utilisation de l'intelligence artificielle.
    3h12 30 leçons

éditeur de vidéos pédagogiques

Des supports pédagogiques en vidéo, produits avec les meilleurs experts. Dans nos studios à Paris, Lyon ou Montpellier. Vous souhaitez travailler avec nous ?
image-micro