36 votes

Quelles jointures SQLite prend-il en charge ?

Selon le la syntaxe join-op SQLite dispose de 13 instructions de jointure distinctes :

,
JOIN
LEFT JOIN
OUTER JOIN
LEFT OUTER JOIN
INNER JOIN
CROSS JOIN
NATURAL JOIN
NATURAL LEFT JOIN
NATURAL OUTER JOIN
NATURAL LEFT OUTER JOIN
NATURAL INNER JOIN
NATURAL CROSS JOIN

Sont-ils tous uniques ? Lesquels sont équivalents ?

49voto

Andrey Fedorov Points 814

La grammaire de SQLite est un peu différente de celle de la spécification SQL-92 selon laquelle les éléments suivants sont illégaux :

*OUTER JOIN
*NATURAL OUTER JOIN
*NATURAL CROSS JOIN

Les deux premiers, parce qu'un <join type> afin de contenir OUTER doit également inclure un <outer join type> avant elle. Le dernier, parce que NATURAL ne peut se produire qu'en <qualified join> et non <cross join> 's. Ces derniers ne semblent se comporter selon aucune spécification, c'est donc une bonne idée de les éviter.

Comme il a été répondu sur la liste de diffusion SQLite3 ne prend en charge que trois jointures : CROSS JOIN , INNER JOIN y LEFT OUTER JOIN . Les éléments suivants sont équivalents :

, == CROSS JOIN
JOIN == INNER JOIN
LEFT JOIN == LEFT OUTER JOIN

Comme expliqué dans l'affaire l'article de wikipedia le mot-clé NATURAL est une abréviation pour la recherche et la correspondance sur des colonnes de même nom, et n'affecte pas le type de jointure.

Selon la Page SQLite , ' RIGHT et FULL ' OUTER JOIN ne sont pas pris en charge.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X