Skip to content

Commit

Permalink
Traduction des fichiers <70
Browse files Browse the repository at this point in the history
  • Loading branch information
gleu committed Aug 24, 2021
1 parent e0d14b7 commit e10cb89
Show file tree
Hide file tree
Showing 5 changed files with 254 additions and 226 deletions.
96 changes: 51 additions & 45 deletions postgresql/queries.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1385,12 +1385,13 @@ GROUP BY GROUPING SETS (
<primary>DISTINCT</primary>
<secondary>GROUP BY DISTINCT</secondary>
</indexterm>
When specifying multiple grouping items together, the final set of grouping
sets might contain duplicates. For example:
Lors de la spécificiation de plusieurs éléments de regroupement,
l'ensemble final des ensembles de regroupement pourrait contenir des
duplicats. Par exemple&nbsp;:
<programlisting>
GROUP BY ROLLUP (a, b), ROLLUP (a, c)
</programlisting>
is equivalent to
est équivalent à&nbsp;:
<programlisting>
GROUP BY GROUPING SETS (
(a, b, c),
Expand All @@ -1404,13 +1405,13 @@ GROUP BY GROUPING SETS (
()
)
</programlisting>
If these duplicates are undesirable, they can be removed using the
<literal>DISTINCT</literal> clause directly on the <literal>GROUP BY</literal>.
Therefore:
Si ces duplicats ne sont pas désirables, ils peuvent être supprimés en utilisant la clause
<literal>DISTINCT</literal> directement sur le <literal>GROUP BY</literal>.
De ce fait&nbsp;:
<programlisting>
GROUP BY <emphasis>DISTINCT</emphasis> ROLLUP (a, b), ROLLUP (a, c)
</programlisting>
is equivalent to
est équivalent à&nbsp;:
<programlisting>
GROUP BY GROUPING SETS (
(a, b, c),
Expand All @@ -1420,9 +1421,10 @@ GROUP BY GROUPING SETS (
()
)
</programlisting>
This is not the same as using <literal>SELECT DISTINCT</literal> because the output
rows may still contain duplicates. If any of the ungrouped columns contains NULL,
it will be indistinguishable from the NULL used when that same column is grouped.
Ceci n'est pas identique à utiliser <literal>SELECT DISTINCT</literal> car
les lignes en sortie pourraient toujours contenir des duplicats. Si une
des colonnes non groupées contient NULL, cela ne sera plus distinguable
du NULL utilisé quand la même colonne est regroupée.
</para>

<note>
Expand Down Expand Up @@ -1579,15 +1581,15 @@ aussi être donné, comme dans&nbsp;:
</para>

<para>
The <literal>AS</literal> key word is usually optional, but in some
cases where the desired column name matches a
<productname>PostgreSQL</productname> key word, you must write
<literal>AS</literal> or double-quote the column name in order to
avoid ambiguity.
(<xref linkend="sql-keywords-appendix"/> shows which key words
require <literal>AS</literal> to be used as a column label.)
For example, <literal>FROM</literal> is one such key word, so this
does not work:
Le mot clé <literal>AS</literal> est habituellement optionnel mais dans
certains cas où le nom de la colonne désirée correspond à un mot clé
<productname>PostgreSQL</productname>, vous devez écrire
<literal>AS</literal> ou placer le nom de la colonne entre guillemets
doubles pour éviter toute ambiguïté.
(<xref linkend="sql-keywords-appendix"/> affiche les mots clés qui
nécessitent que <literal>AS</literal> soit utilisé comme label de
colonne.) Par exemple, <literal>FROM</literal> est un de ces mots clés,
donc ceci ne fonctionnera pas&nbsp;:
<programlisting>
SELECT a, b + c AS somme FROM ...
</programlisting>
Expand Down Expand Up @@ -2071,7 +2073,7 @@ GROUP BY region, produit;</programlisting>
</sect2>

<sect2 id="queries-with-recursive">
<title>Recursive Queries</title>
<title>Requêtes récursives</title>

<para>
<indexterm>
Expand Down Expand Up @@ -2172,7 +2174,7 @@ GROUP BY sous_partie</programlisting>
</para>

<sect3 id="queries-with-search">
<title>Search Order</title>
<title>Ordre de recherche</title>

<para>
When computing a tree traversal using a recursive query, you might want to
Expand Down Expand Up @@ -2307,7 +2309,7 @@ SELECT * FROM search_tree ORDER BY ordercol;
</sect3>

<sect3 id="queries-with-cycle">
<title>Cycle Detection</title>
<title>Détection de cycles</title>

<para>
Quand on travaille avec des requêtes récursives, il est important d'être sûr
Expand Down Expand Up @@ -2397,38 +2399,42 @@ SELECT * FROM search_graph;
</para>
</tip>

<para>
There is built-in syntax to simplify cycle detection. The above query can
also be written like this:
<programlisting>
WITH RECURSIVE search_graph(id, link, data, depth) AS (
<para>
Il existe une syntaxe interne pour simplifier la détection de cycles. La
requête ci-dessus peut aussi être écrite ainsi&nbsp;:

<programlisting>WITH RECURSIVE search_graph(id, link, data, depth) AS (
SELECT g.id, g.link, g.data, 1
FROM graph g
UNION ALL
SELECT g.id, g.link, g.data, sg.depth + 1
FROM graph g, search_graph sg
WHERE g.id = sg.link
) <emphasis>CYCLE id SET is_cycle USING path</emphasis>
SELECT * FROM search_graph;
</programlisting>
and it will be internally rewritten to the above form. The
<literal>CYCLE</literal> clause specifies first the list of columns to
track for cycle detection, then a column name that will show whether a
cycle has been detected, and finally the name of another column that will track the
path. The cycle and path columns will implicitly be added to the output
rows of the CTE.
</para>
SELECT * FROM search_graph;</programlisting>

et elle sera réécrite en interne sous le forme ci-dessus. La clause
<literal>CYCLE</literal> indique tout d'abord la liste des colonnes à
tracer pour une détection de cycle, puis le nom de la colonne qui
indiquera si un cycle a été détecté, et enfin le nom d'une autre
colonne qui tracera le chemin. Les colonnes cycle et chemin seront
automatiquement ajoutées aux lignes en sortie de la CTE.
</para>

<tip>
<para>
The cycle path column is computed in the same way as the depth-first
ordering column show in the previous section. A query can have both a
<literal>SEARCH</literal> and a <literal>CYCLE</literal> clause, but a
depth-first search specification and a cycle detection specification would
create redundant computations, so it's more efficient to just use the
<literal>CYCLE</literal> clause and order by the path column. If
breadth-first ordering is wanted, then specifying both
<literal>SEARCH</literal> and <literal>CYCLE</literal> can be useful.
La colonne du chemindu cycle est calculée de la même façon que
l'affiche la colonne de tri <foreignphrase>depth-first</foreignphrase>
dans la section précédente. Une requête peut avoir à la fois une
clause <literal>SEARCH</literal> et une clause
<literal>CYCLE</literal>, mais une spécification de recherche
<foreignphrase>depth-first</foreignphrase> et une spécification de
recherche de cyle vont créer des calculs redondants, donc il est plus
efficace d'utiliser juste la clause <literal>CYCLE</literal> et trier
par la colonne du chemin. Si un tri
<foreignphrase>breadth-first</foreignphrase> est voulu, alors indiquer
les deux, <literal>SEARCH</literal> and <literal>CYCLE</literal>, peut
être utile.
</para>
</tip>

Expand Down Expand Up @@ -2460,7 +2466,7 @@ SELECT n FROM t <emphasis>LIMIT 100</emphasis>;
</sect2>

<sect2>
<title>Common Table Expression Materialization</title>
<title>Matérialisation des CTE</title>

<para>
Une propriété intéressante des requêtes <literal>WITH</literal> est qu'elles
Expand Down
126 changes: 68 additions & 58 deletions postgresql/ref/select.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="parameter">expression</replac
<phrase>et <replaceable class="parameter">requête_with</replaceable> est&nbsp;:</phrase>

<replaceable class="parameter">nom_requête_with</replaceable> [ ( <replaceable class="parameter">nom_colonne</replaceable> [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( <replaceable class="parameter">select</replaceable> | <replaceable class="parameter">valeurs</replaceable> | <replaceable class="parameter">insert</replaceable> | <replaceable class="parameter">update</replaceable> | <replaceable class="parameter">delete</replaceable> )
[ SEARCH { BREADTH | DEPTH } FIRST BY <replaceable>column_name</replaceable> [, ...] SET <replaceable>search_seq_col_name</replaceable> ]
[ CYCLE <replaceable>column_name</replaceable> [, ...] SET <replaceable>cycle_mark_col_name</replaceable> [ TO <replaceable>cycle_mark_value</replaceable> DEFAULT <replaceable>cycle_mark_default</replaceable> ] USING <replaceable>cycle_path_col_name</replaceable> ]
[ SEARCH { BREADTH | DEPTH } FIRST BY <replaceable>nom_colonne</replaceable> [, ...] SET <replaceable>search_seq_col_name</replaceable> ]
[ CYCLE <replaceable>nom_colonne</replaceable> [, ...] SET <replaceable>cycle_mark_col_name</replaceable> [ TO <replaceable>cycle_mark_value</replaceable> DEFAULT <replaceable>cycle_mark_default</replaceable> ] USING <replaceable>cycle_path_col_name</replaceable> ]

TABLE [ ONLY ] <replaceable class="parameter">nom_table</replaceable> [ * ]
</synopsis>
Expand Down Expand Up @@ -273,47 +273,53 @@ TABLE [ ONLY ] <replaceable class="parameter">nom_table</replaceable> [ * ]
</para>

<para>
The optional <literal>SEARCH</literal> clause computes a <firstterm>search
sequence column</firstterm> that can be used for ordering the results of a
recursive query in either breadth-first or depth-first order. The
supplied column name list specifies the row key that is to be used for
keeping track of visited rows. A column named
<replaceable>search_seq_col_name</replaceable> will be added to the result
column list of the <literal>WITH</literal> query. This column can be
ordered by in the outer query to achieve the respective ordering. See
<xref linkend="queries-with-search"/> for examples.
</para>

<para>
The optional <literal>CYCLE</literal> clause is used to detect cycles in
recursive queries. The supplied column name list specifies the row key
that is to be used for keeping track of visited rows. A column named
<replaceable>cycle_mark_col_name</replaceable> will be added to the result
column list of the <literal>WITH</literal> query. This column will be set
to <replaceable>cycle_mark_value</replaceable> when a cycle has been
detected, else to <replaceable>cycle_mark_default</replaceable>.
Furthermore, processing of the recursive union will stop when a cycle has
been detected. <replaceable>cycle_mark_value</replaceable> and
<replaceable>cycle_mark_default</replaceable> must be constants and they
must be coercible to a common data type, and the data type must have an
inequality operator. (The SQL standard requires that they be Boolean
constants or character strings, but PostgreSQL does not require that.) By
default, <literal>TRUE</literal> and <literal>FALSE</literal> (of type
<type>boolean</type>) are used. Furthermore, a column
named <replaceable>cycle_path_col_name</replaceable> will be added to the
result column list of the <literal>WITH</literal> query. This column is
used internally for tracking visited rows. See <xref
linkend="queries-with-cycle"/> for examples.
</para>

<para>
Both the <literal>SEARCH</literal> and the <literal>CYCLE</literal> clause
are only valid for recursive <literal>WITH</literal> queries. The
<replaceable>with_query</replaceable> must be a <literal>UNION</literal>
(or <literal>UNION ALL</literal>) of two <literal>SELECT</literal> (or
equivalent) commands (no nested <literal>UNION</literal>s). If both
clauses are used, the column added by the <literal>SEARCH</literal> clause
appears before the columns added by the <literal>CYCLE</literal> clause.
La clause optionnelle <literal>SEARCH</literal> calcule une
<firstterm>colonne de séquence de recherche</firstterm> qui peut être
utilisé pour trier les résultats d'une requête récursive soit en
<foreignphrase>breadth-first</foreignphrase> ou des
<foreignphrase>depth-first</foreignphrase>. La liste de noms de colonnes
fournie indique la clé de ligne qui est utilisée pour garder trace des
lignes visitées. Une colonne nommée
<replaceable>search_seq_col_name</replaceable> sera ajoutée à la liste
des colonnes résultats de la requête <literal>WITH</literal>. Cette
colonne peut être triée dans la requête externe pour réaliser le tri
demandé. Voir <xref linkend="queries-with-search"/> pour des exemples.
</para>

<para>
La clause optionnelle <literal>CYCLE</literal> est utilisé pour détecter
les cycles dans les requêtes récursives. La liste des noms de colonnes
fournie indiqué la clé de ligne qui est à utiliser pour garder trace des
lignes visitées. Une colonne nommée
<replaceable>cycle_mark_col_name</replaceable> sera ajoutée à la liste de
colonnes en résultat de la requête <literal>WITH</literal>. Cette colonne
est initialisée à <replaceable>cycle_mark_value</replaceable> quand un
cycle est détecté, et sinon à
<replaceable>cycle_mark_default</replaceable>. De plus, le traitement de
l'union récursif s'arrêtera quand un cycle aura été détecté.
<replaceable>cycle_mark_value</replaceable> et
<replaceable>cycle_mark_default</replaceable> doivent être des constantes
et elles sont convertibles automatiquement vers un type de données
commun. Le type de données doit avoir un opérateur d'inégalité.
(Le standard SQL requiert qu'elles doivent être de type booléen ou chaîne
de caractères, mais PostgreSQL ne l'oblige pas.) Par défaut,
<literal>TRUE</literal> et <literal>FALSE</literal> (de type
<type>boolean</type>) sont utilisés. De plus, une colonne nommée
<replaceable>cycle_path_col_name</replaceable> sera ajoutée à la liste de
colonnes en résultat de la requête <literal>WITH</literal>. Cette colonne
est utilisée en interne pour traquer les lignes visitées. Voir <xref
linkend="queries-with-cycle"/> pour des exemples.
</para>

<para>
Les clauses <literal>SEARCH</literal> et <literal>CYCLE</literal> sont
seulement valides pour les requêtes <literal>WITH</literal> récursives.
<replaceable>with_query</replaceable> doit être une
<literal>UNION</literal>(ou <literal>UNION ALL</literal>) de deux
commandes <literal>SELECT</literal> (ou équivalent) commands (pas de
<literal>UNION</literal>imbriqués). Si les deux clauses sont utilisées,
la colonne ajoutée par la clause <literal>SEARCH</literal> apparaît avant
les colonnes ajoutées par la clause <literal>CYCLE</literal>.
</para>

<para>
Expand Down Expand Up @@ -706,15 +712,18 @@ TABLE [ ONLY ] <replaceable class="parameter">nom_table</replaceable> [ * ]
</para>

<para>
If a <replaceable class="parameter">join_using_alias</replaceable>
name is specified, it provides a table alias for the join columns.
Only the join columns listed in the <literal>USING</literal> clause
are addressable by this name. Unlike a regular <replaceable
class="parameter">alias</replaceable>, this does not hide the names of
the joined tables from the rest of the query. Also unlike a regular
<replaceable class="parameter">alias</replaceable>, you cannot write a
column alias list &mdash; the output names of the join columns are the
same as they appear in the <literal>USING</literal> list.
Si un nom <replaceable
class="parameter">jointure_utilisant_alias</replaceable> est indiqué,
il fournit un alias de table pour les colonnes de la jointure. Seules
les colonnes de la jointure listées dans la clause
<literal>USING</literal> sont adressables par ce nom. Contrairement à
l'habituel <replaceable class="parameter">alias</replaceable>, cela
ne cache pas les noms des tables jointes du reste de la requête. De
plus, contrairement à un <replaceable
class="parameter">alias</replaceable> standard, vous ne pouvez pas
écrire une liste d'alias de colonnes &mdash; les noms en sortie des
colonnes de jointure sont identiques à comment elles apparaissent en
utilisant la liste <literal>USING</literal>.
</para>
</listitem>
</varlistentry>
Expand Down Expand Up @@ -834,14 +843,15 @@ TABLE [ ONLY ] <replaceable class="parameter">nom_table</replaceable> [ * ]
<literal>ROLLUP</literal> ou <literal>CUBE</literal> est présente comme
élément de regroupement, alors la clause <literal>GROUP BY</literal> dans
sa globalité définit un certain nombre d'<replaceable>ensembles de
regroupement</replaceable> indépendants. L'effet de ceci est l'équivalent
regroupement</replaceable> indépendants. L'effet de ceci est l'équivalent
de la construction d'un <literal>UNION ALL</literal> des sous-requêtes
pour chaque ensemble de regroupement individuel avec leur propre clause
<literal>GROUP BY</literal>. The optional <literal>DISTINCT</literal>
clause removes duplicate sets before processing; it does <emphasis>not</emphasis>
transform the <literal>UNION ALL</literal> into a <literal>UNION DISTINCT</literal>.
Pour plus de détails sur la gestion des
ensembles de regroupement, voir <xref linkend="queries-grouping-sets"/>.
<literal>GROUP BY</literal>. La clause optionnelle
<literal>DISTINCT</literal> supprime les ensembles dupliqués avant le
traitement&nbsp;; elle ne transforme <emphasis>pas</emphasis> le
<literal>UNION ALL</literal> en un <literal>UNION DISTINCT</literal>.
Pour plus de détails sur la gestion des ensembles de regroupement, voir
<xref linkend="queries-grouping-sets"/>.
</para>

<para>
Expand Down

0 comments on commit e10cb89

Please sign in to comment.