1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9966],{8583:function(e,s,l){(window.__NEXT_P=window.__NEXT_P||[]).push(["/postgresql-join.fr-FR",function(){return l(7505)}])},7505:function(e,s,l){"use strict";l.r(s),l.d(s,{__toc:function(){return a}});var n=l(5893),r=l(2673),o=l(9298),i=l(8426);l(9128);var t=l(2643);let a=[{depth:2,value:"Introduction aux JOINs",id:"introduction-aux-joins"},{depth:3,value:"Syntaxe de base",id:"syntaxe-de-base"},{depth:2,value:"Types de JOINs dans PostgreSQL",id:"types-de-joins-dans-postgresql"},{depth:2,value:"1. INNER JOIN",id:"1-inner-join"},{depth:2,value:"2. LEFT JOIN",id:"2-left-join"},{depth:2,value:"3. RIGHT JOIN",id:"3-right-join"},{depth:2,value:"4. FULL OUTER JOIN",id:"4-full-outer-join"},{depth:2,value:"5. CROSS JOIN",id:"5-cross-join"},{depth:2,value:"Jointure de plusieurs tables",id:"jointure-de-plusieurs-tables"},{depth:2,value:"Utilisation d'Alias de Table",id:"utilisation-dalias-de-table"},{depth:2,value:"Self JOIN",id:"self-join"},{depth:2,value:"JOIN avec la clause USING",id:"join-avec-la-clause-using"},{depth:2,value:"NATURAL JOIN",id:"natural-join"},{depth:2,value:"Conclusion",id:"conclusion"},{depth:2,value:"Schema Initialization",id:"schema-initialization"}];function _createMdxContent(e){let s=Object.assign({h1:"h1",p:"p",strong:"strong",h2:"h2",h3:"h3",pre:"pre",code:"code",span:"span",ul:"ul",li:"li",a:"a",hr:"hr"},(0,t.a)(),e.components);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h1,{children:"PostgreSQL JOIN : Combinaison de donn\xe9es issues de plusieurs tables"}),"\n",(0,n.jsxs)(s.p,{children:["Bienvenue dans notre s\xe9rie de tutoriels sur PostgreSQL ! Dans cette le\xe7on, nous allons explorer les ",(0,n.jsx)(s.strong,{children:"JOINs"}),", une fonctionnalit\xe9 puissante de PostgreSQL qui vous permet de combiner des lignes de deux tables ou plus en fonction de colonnes li\xe9es. Comprendre les JOINs est essentiel pour interroger efficacement des bases de donn\xe9es relationnelles."]}),"\n",(0,n.jsx)(s.h2,{id:"introduction-aux-joins",children:"Introduction aux JOINs"}),"\n",(0,n.jsxs)(s.p,{children:["Dans PostgreSQL, une clause ",(0,n.jsx)(s.strong,{children:"JOIN"})," est utilis\xe9e pour combiner des lignes de deux tables ou plus en fonction d'une colonne li\xe9e entre elles. Les JOINs sont fondamentaux lorsque vous devez r\xe9cup\xe9rer des donn\xe9es r\xe9parties sur plusieurs tables."]}),"\n",(0,n.jsx)(s.h3,{id:"syntaxe-de-base",children:"Syntaxe de base"}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" columns"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" table1"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" table2 "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" table1.column_name "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" table2.column_name;"})]})]})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"SELECT"})," : Sp\xe9cifie les colonnes que vous souhaitez r\xe9cup\xe9rer."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"FROM"})," : Sp\xe9cifie la table primaire."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"JOIN"})," : Combine les lignes d'une autre table."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"ON"})," : Sp\xe9cifie la condition pour faire correspondre les lignes."]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"types-de-joins-dans-postgresql",children:"Types de JOINs dans PostgreSQL"}),"\n",(0,n.jsx)(s.p,{children:"PostgreSQL prend en charge plusieurs types de JOINs :"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.strong,{children:"INNER JOIN"})}),"\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.strong,{children:"LEFT JOIN"})}),"\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.strong,{children:"RIGHT JOIN"})}),"\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.strong,{children:"FULL OUTER JOIN"})}),"\n",(0,n.jsx)(s.li,{children:(0,n.jsx)(s.strong,{children:"CROSS JOIN"})}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"Explorons chaque type avec des exemples."}),"\n",(0,n.jsx)(s.h2,{id:"1-inner-join",children:"1. INNER JOIN"}),"\n",(0,n.jsxs)(s.p,{children:["Un ",(0,n.jsx)(s.strong,{children:"INNER JOIN"})," renvoie des lignes lorsqu'il y a une correspondance dans les deux tables."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : r\xe9cup\xe9rer les livres ainsi que les noms de leurs auteurs"})}),"\n",(0,n.jsxs)(s.p,{children:["Supposons que nous ayons une table ",(0,n.jsx)(s.code,{children:"books"})," et une table ",(0,n.jsx)(s.code,{children:"authors"}),". Pour obtenir les titres de livres ainsi que les noms des auteurs :"]}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.title, authors.name"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INNER JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.author "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors.name;"})]})]})}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.a,{href:"#schema-initialization",children:"Voir Initialisation du Sch\xe9ma"})}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Explication :"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Nous faisons un join entre ",(0,n.jsx)(s.code,{children:"books"})," et ",(0,n.jsx)(s.code,{children:"authors"})," o\xf9 la colonne ",(0,n.jsx)(s.code,{children:"author"})," dans ",(0,n.jsx)(s.code,{children:"books"})," correspond \xe0 la colonne ",(0,n.jsx)(s.code,{children:"name"})," dans ",(0,n.jsx)(s.code,{children:"authors"}),"."]}),"\n",(0,n.jsx)(s.li,{children:"Seules les lignes avec des auteurs correspondants dans les deux tables s
1ont renvoy\xe9es."}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"2-left-join",children:"2. LEFT JOIN"}),"\n",(0,n.jsxs)(s.p,{children:["Un ",(0,n.jsx)(s.strong,{children:"LEFT JOIN"})," renvoie toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite. Les lignes non appari\xe9es de la table de droite produisent des valeurs ",(0,n.jsx)(s.code,{children:"NULL"}),"."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : r\xe9cup\xe9rer tous les livres et leurs auteurs, y compris les livres sans auteur correspondant dans la table des auteurs"})}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.title, authors.name"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"LEFT JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.author "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors.name;"})]})]})}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Explication :"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Tous les livres sont renvoy\xe9s."}),"\n",(0,n.jsxs)(s.li,{children:["Si un auteur d'un livre n'est pas trouv\xe9 dans la table ",(0,n.jsx)(s.code,{children:"authors"}),", la colonne ",(0,n.jsx)(s.code,{children:"authors.name"})," sera \xe0 ",(0,n.jsx)(s.code,{children:"NULL"}),"."]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"3-right-join",children:"3. RIGHT JOIN"}),"\n",(0,n.jsxs)(s.p,{children:["Un ",(0,n.jsx)(s.strong,{children:"RIGHT JOIN"})," renvoie toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche. Les lignes non appari\xe9es de la table de gauche produisent des valeurs ",(0,n.jsx)(s.code,{children:"NULL"}),"."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : r\xe9cup\xe9rer tous les auteurs et leurs livres, y compris les auteurs qui n'ont \xe9crit aucun livre"})}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.title, authors.name"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"RIGHT JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.author "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors.name;"})]})]})}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Explication :"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Tous les auteurs sont renvoy\xe9s."}),"\n",(0,n.jsxs)(s.li,{children:["Si un auteur n'a pas \xe9crit de livres dans la table ",(0,n.jsx)(s.code,{children:"books"}),", la colonne ",(0,n.jsx)(s.code,{children:"books.title"})," sera \xe0 ",(0,n.jsx)(s.code,{children:"NULL"}),"."]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"4-full-outer-join",children:"4. FULL OUTER JOIN"}),"\n",(0,n.jsxs)(s.p,{children:["Un ",(0,n.jsx)(s.strong,{children:"FULL OUTER JOIN"})," renvoie toutes les lignes lorsqu'il y a une correspondance dans l'une des tables. Les lignes non appari\xe9es auront des valeurs ",(0,n.jsx)(s.code,{children:"NULL"})," pour les colonnes de la table sans correspondance."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : r\xe9cup\xe9rer tous les livres et auteurs, y compris les enregistrements non appari\xe9s des deux c\xf4t\xe9s"})}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.title, authors.name"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FULL OUTER JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.author "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors.name;"})]})]})}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Explication :"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Combine les r\xe9sultats des JOINs \xe0 gauche et \xe0 droite."}),"\n",(0,n.jsxs)(s.li,{children:["Tous les livres et auteurs sont list\xe9s, avec des ",(0,n.jsx)(s.code,{children:"NULL"})," lorsqu'il n'y a pas de correspondance."]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"5-cross-join",children:"5. CROSS JOIN"}),"\n",(0,n.jsxs)(s.p,{children:["Un ",(0,n.jsx)(s.strong,{children:"CROSS JOIN"})," renvoie le produit cart\xe9sien des lignes des tables dans le join. Il combine chaque ligne de la premi\xe8re table avec toutes les lignes de la deuxi\xe8me table."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : g\xe9n\xe9rer toutes les combinaisons possibles de livres et de films"})}),"\n",(0,n.jsxs)(s.p,{children:["Supposons que nous ayons une table ",(0,n.jsx)(s.code,{children:"movies"})," :"]}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AS"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" book_title, movies.title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AS"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" movie_title"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"CROSS JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" movies;"})]})]})}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Explication :"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Chaque titre de livre est associ\xe9 \xe0 chaque titre de film."}),"\n",(0,n.jsx)(s.li,{children:"Utile pour g\xe9n\xe9rer des combinaisons ou pour des tests."}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"jointure-de-plusieurs-tables",children:"Jointure de plusieurs tables"}),"\n",(0,n.jsx)(s.p,{children:"Vous pouvez joindre plus de deux tables dans une seule requ\xeate."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : r\xe9cup\xe9rer les titres des livres, les auteurs et les films associ\xe9s"})}),"\n",(0,n.jsxs)(s.p,{children:["Supposons que nous ayons une table ",(0,n.jsx)(s.code,{children:"book_movies"})," reliant les livres aux films :"]}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"-- On suppose que la table book_movies existe avec les colonnes book_title et movie_title"})}),"\n",(0,n.jsx)(s.span,{className:"line",children:" "}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"}
1,children:" books.title, authors.name, movies.title"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INNER JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.author "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors.name"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INNER JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" book_movies "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" book_movies.book_title"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INNER JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" movies "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" book_movies.movie_title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" movies.title;"})]})]})}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Explication :"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Nous faisons un join de ",(0,n.jsx)(s.code,{children:"books"})," avec ",(0,n.jsx)(s.code,{children:"authors"}),", puis avec ",(0,n.jsx)(s.code,{children:"book_movies"})," et ",(0,n.jsx)(s.code,{children:"movies"}),"."]}),"\n",(0,n.jsx)(s.li,{children:"Seuls les enregistrements ayant des correspondances dans toutes les tables sont renvoy\xe9s."}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"utilisation-dalias-de-table",children:"Utilisation d'Alias de Table"}),"\n",(0,n.jsx)(s.p,{children:"Les alias rendent les requ\xeates plus lisibles, en particulier avec plusieurs tables."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : utiliser des alias pour plus de clart\xe9"})}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b.title, a.name"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AS"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INNER JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AS"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" a "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b.author "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" a.name;"})]})]})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"b"})," et ",(0,n.jsx)(s.code,{children:"a"})," sont des alias pour ",(0,n.jsx)(s.code,{children:"books"})," et ",(0,n.jsx)(s.code,{children:"authors"}),", respectivement."]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"self-join",children:"Self JOIN"}),"\n",(0,n.jsxs)(s.p,{children:["Un ",(0,n.jsx)(s.strong,{children:"Self JOIN"})," est un JOIN classique, mais la table est jointe avec elle-m\xeame."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : trouver des livres ayant le m\xeame prix"})}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b1.title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AS"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" book1, b2.title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AS"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" book2, b1.price"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AS"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b1"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INNER JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AS"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b2 "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"ON"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b1.price "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b2.price "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"AND"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b1.title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"<>"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" b2.title;"})]})]})}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Explication :"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Nous faisons un join de ",(0,n.jsx)(s.code,{children:"books"})," avec elle-m\xeame o\xf9 les prix sont \xe9gaux mais les titres sont diff\xe9rents."]}),"\n",(0,n.jsx)(s.li,{children:"Utile pour trouver des doublons ou des enregistrements apparent\xe9s au sein de la m\xeame table."}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"join-avec-la-clause-using",children:"JOIN avec la clause USING"}),"\n",(0,n.jsxs)(s.p,{children:["La clause ",(0,n.jsx)(s.code,{children:"USING"})," simplifie la condition de jointure lorsque les deux tables partagent une colonne portant le m\xeame nom."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : simplifier la condition de jointure"})}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books.title, authors.name"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INNER JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"USING"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"name"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:");"})]})]})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Note :"})," Dans notre sch\xe9ma, la table ",(0,n.jsx)(s.code,{children:"books"})," a une colonne ",(0,n.jsx)(s.code,{children:"author"}),", et la table ",(0,n.jsx)(s.code,{children:"authors"})," a une colonne ",(0,n.jsx)(s.code,{children:"name"}),". Puisque les noms de colonnes sont diff\xe9rents, ",(0,n.jsx)(s.code,{children:"USING"})," n'est pas applicable sauf si les noms de colonnes sont identiques."]}),"\n",(0,n.jsx)(s.h2,{id:"natural-join",children:"NATURAL JOIN"}),"\n",(0,n.jsxs)(s.p,{children:["Un ",(0,n.jsx)(s.strong,{children:"NATURAL JOIN"})," joint automatiquement les tables en fonction des colonnes ayant les m\xeames noms."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Exemple : join naturel entre des tables ayant des colonnes communes portant le m\xeame nom"})}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"-- Si les deux tables avaient une colonne nomm\xe9e 'author'"})}),"\n",(0,n.jsx)(s.span,{className:"line",children:" "}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"SELECT"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"*"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"FROM"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"NATURAL JOIN"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors;"})]})]})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Attention :"})," Utilisez le NATURAL JOIN avec pr\xe9caution, car il pourrait joindre par erreur sur des colonnes que vous n'aviez pas l'intention de faire correspondre."]}),"\n",(0,n.jsx)(s.h2,{id:"conclusion",children:"Conclusion"}),"\n",(0,n.jsx)(s.p,{children:"Les JOINs dans PostgreSQL sont essentiels pour interroger des donn\xe9es r\xe9parties sur plusieurs tables. En ma\xeetrisant les JOINs, vou
1s pourrez \xe9crire des requ\xeates complexes qui fournissent des informations pr\xe9cieuses \xe0 partir de vos donn\xe9es relationnelles."}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"Points Cl\xe9s :"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"INNER JOIN"})," : renvoie les lignes correspondantes des deux tables."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"LEFT JOIN"})," : renvoie toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"RIGHT JOIN"})," : renvoie toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"FULL OUTER JOIN"})," : renvoie toutes les lignes lorsqu'il y a une correspondance dans l'une des tables."]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.strong,{children:"CROSS JOIN"})," : renvoie le produit cart\xe9sien des deux tables."]}),"\n",(0,n.jsx)(s.li,{children:"Utilisez des alias de table pour am\xe9liorer la lisibilit\xe9."}),"\n",(0,n.jsxs)(s.li,{children:["Soyez prudent avec les clauses ",(0,n.jsx)(s.code,{children:"NATURAL JOIN"})," et ",(0,n.jsx)(s.code,{children:"USING"}),"."]}),"\n"]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.h2,{id:"schema-initialization",children:"Schema Initialization"}),"\n",(0,n.jsx)(s.p,{children:"Pour ex\xe9cuter les exemples fournis, assurez-vous que votre base de donn\xe9es PostgreSQL est configur\xe9e avec le sch\xe9ma suivant :"}),"\n",(0,n.jsx)(s.pre,{"data-language":"sql","data-theme":"default",children:(0,n.jsxs)(s.code,{"data-language":"sql","data-theme":"default",children:[(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"-- Create the books table"})}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"CREATE"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"TABLE"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"books"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ("})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"VARCHAR"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"255"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" author "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"VARCHAR"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"255"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" price "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"NUMERIC"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"10"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"2"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" pages "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INTEGER"})]}),"\n",(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:");"})}),"\n",(0,n.jsx)(s.span,{className:"line",children:" "}),"\n",(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"-- Insert sample data into the books table"})}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INSERT INTO"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" books (title, author, price, pages) "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"VALUES"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'The Great Gatsby'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'F. Scott Fitzgerald'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"10"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"."}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"99"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"180"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'To Kill a Mockingbird'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Harper Lee'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"7"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"."}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"99"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"281"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'1984'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'George Orwell'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"8"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"."}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"99"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"328"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Pride and Prejudice'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Jane Austen'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"6"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"."}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"99"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"279"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'The Catcher in the Rye'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'J.D. Salinger'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"9"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"."}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"99"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"214"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Moby-Dick'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Herman Melville'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"11"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"."}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"99"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"635"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'War and Peace'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Leo Tolstoy'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"12"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"."}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"99"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:", "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"1225"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:");"})]}),"\n",(0,n.jsx)(s.span,{className:"line",children:" "}),"\n",(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"-- Create the authors table"})}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"CREATE"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"TABLE"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"authors"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ("})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"name"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"VARCHAR"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"255"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:")"})]}),"\n",(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:");"})}),"\n",(0,n.jsx)(s.span,{className:"line",children:" "}),"\n",(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"-- Insert sample data into the authors table"})}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INSERT INTO"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" authors ("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"name"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:") "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"VALUES"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'F. Scott Fitzgerald'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Harper Lee'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'George Orwell'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Jane Austen'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'J.D. Salinger'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Herman Melville'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Leo Tolstoy'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:");"})]}),"\n",(0,n.jsx)(s.span,{className:"line",children:" "}),"\n",(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"-- Create the movies table"})}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"CREATE"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"TABLE"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"movies"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ("})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-te
1xt)"},children:" title "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"VARCHAR"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"255"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:")"})]}),"\n",(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:");"})}),"\n",(0,n.jsx)(s.span,{className:"line",children:" "}),"\n",(0,n.jsx)(s.span,{className:"line",children:(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"-- Insert sample data into the movies table"})}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"INSERT INTO"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" movies (title) "}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"VALUES"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'The Shawshank Redemption'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'The Godfather'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'The Dark Knight'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'Pulp Fiction'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"),"})]}),"\n",(0,n.jsxs)(s.span,{className:"line",children:[(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"("}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'The Lord of the Rings'"}),(0,n.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:");"})]})]})}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsx)(s.p,{children:"N'h\xe9sitez pas \xe0 exp\xe9rimenter avec les exemples et \xe0 modifier les requ\xeates pour approfondir votre compr\xe9hension des JOINs dans PostgreSQL. Bonne interrogation de donn\xe9es !"})]})}let c={MDXContent:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:s}=Object.assign({},(0,t.a)(),e.components);return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(_createMdxContent,{...e})}):_createMdxContent(e)},pageOpts:{filePath:"pages/postgresql-join.fr-FR.mdx",route:"/postgresql-join",timestamp:1730457028e3,pageMap:[{kind:"Meta",locale:"fr-FR",data:{index:{title:"Qu'est-ce que PostgreSQL ?"},"postgresql-select":{title:"SELECT : Interroger des donn\xe9es"},"postgresql-where":{title:"WHERE : Filtrer les donn\xe9es"},"postgresql-join":{title:"JOIN : Combiner les donn\xe9es des tables"},"postgresql-group-by":{title:"GROUP BY : Agr\xe9ger des donn\xe9es"},"postgresql-insert":{title:"INSERT : Ajouter de nouvelles donn\xe9es"},"postgresql-update":{title:"UPDATE : Modifier les donn\xe9es"}}},{kind:"MdxPage",name:"index",route:"/",locale:"fr-FR"},{kind:"MdxPage",name:"postgresql-group-by",route:"/postgresql-group-by",locale:"fr-FR"},{kind:"MdxPage",name:"postgresql-insert",route:"/postgresql-insert",locale:"fr-FR"},{kind:"MdxPage",name:"postgresql-join",route:"/postgresql-join",locale:"fr-FR"},{kind:"MdxPage",name:"postgresql-select",route:"/postgresql-select",locale:"fr-FR"},{kind:"MdxPage",name:"postgresql-update",route:"/postgresql-update",locale:"fr-FR"},{kind:"MdxPage",name:"postgresql-where",route:"/postgresql-where",locale:"fr-FR"}],flexsearch:{codeblocks:!0},title:"PostgreSQL JOIN : Combinaison de donn\xe9es issues de plusieurs tables",headings:a},pageNextRoute:"/postgresql-join.fr-FR",nextraLayout:o.ZP,themeConfig:i.Z};s.default=(0,r.j)(c)},8426:function(e,s,l){"use strict";var n=l(5893);l(7294);let r={logo:(0,n.jsx)("span",{children:"PostgreSQL Tutorial"}),useNextSeoProps:()=>({titleTemplate:"%s â postgresqltutorial.dev"}),editLink:{text:null},toc:{extraContent:!1},feedback:{content:null},footer:{text:(0,n.jsxs)("span",{children:["\xa9"," ",(0,n.jsx)("a",{href:"https://postgresqltutorial.dev",children:"postgresqltutorial.dev"})]})},i18n:[{locale:"en-US",text:"\uD83C\uDDFA\uD83C\uDDF8 English"},{locale:"es-ES",text:"\uD83C\uDDEA\uD83C\uDDF8 Spanish"},{locale:"fr-FR",text:"\uD83C\uDDEB\uD83C\uDDF7 French"},{locale:"de-DE",text:"\uD83C\uDDE9\uD83C\uDDEA German"},{locale:"zh-CN",text:"\uD83C\uDDE8\uD83C\uDDF3 Chinese (Simplified)"},{locale:"pt-BR",text:"\uD83C\uDDE7\uD83C\uDDF7 Portuguese (Brazil)"},{locale:"nl-NL",text:"\uD83C\uDDF3\uD83C\uDDF1 Dutch"}
1,{locale:"ko-KR",text:"\uD83C\uDDF0\uD83C\uDDF7 Korean"},{locale:"tr-TR",text:"\uD83C\uDDF9\uD83C\uDDF7 Turkish"},{locale:"vi-VN",text:"\uD83C\uDDFB\uD83C\uDDF3 Vietnamese"},{locale:"it-IT",text:"\uD83C\uDDEE\uD83C\uDDF9 Italian"},{locale:"pl-PL",text:"\uD83C\uDDF5\uD83C\uDDF1 Polish"},{locale:"uk-UA",text:"\uD83C\uDDFA\uD83C\uDDE6 Ukrainian"},{locale:"ru-RU",text:"\uD83C\uDDF7\uD83C\uDDFA Russian"},{locale:"ja-JP",text:"\uD83C\uDDEF\uD83C\uDDF5 Japanese"},{locale:"hi-IN",text:"\uD83C\uDDEE\uD83C\uDDF3 Hindi"},{locale:"bn-IN",text:"\uD83C\uDDEE\uD83C\uDDF3 Bengali"},{locale:"ta-IN",text:"\uD83C\uDDEE\uD83C\uDDF3 Tamil"},{locale:"id-ID",text:"\uD83C\uDDEE\uD83C\uDDE9 Indonesian"},{locale:"th-TH",text:"\uD83C\uDDF9\uD83C\uDDED Thai"},{locale:"sv-SE",text:"\uD83C\uDDF8\uD83C\uDDEA Swedish"},{locale:"cs-CZ",text:"\uD83C\uDDE8\uD83C\uDDFF Czech"}]};s.Z=r}},function(e){e.O(0,[9774,2977,2888,179],function(){return e(e.s=8583)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.