2009-02-20 6 views
0

Les instructions de sélection suivantes sont-elles conformes à SQL92?sql ansi-92 Conforme Question

SELECT table1.id, table2.id, * à partir de table1, table2 OÙ table1.id = table2.id

SELECT table1.Num, table2.id, * à partir de table1, table2 OÙ Table1 .Num = table2.id

Répondre

1

Oui, les requêtes vous montrent l'utilisation SQL92 syntaxe conforme. Ma copie de "Understanding the New SQL: A Complete Guide" par Jim Melton & Alan R. Simon le confirme. SQL12 prend toujours en charge les jointures à l'aide de la syntaxe de virgule pour la rétrocompatibilité avec SQL89. Pour autant que je sache, toutes les implémentations SQL prennent en charge à la fois la syntaxe de virgule et les jointures de syntaxe JOIN.

Dans la plupart des cas, l'implémentation SQL sait comment les optimiser pour qu'ils soient identiques en termes de sémantique (c'est-à-dire qu'ils produisent le même résultat) et de performance.

1

Je peux me tromper, mais je crois comprendre que la convention SQL92 est de joindre des tables en utilisant l'instruction JOIN (par exemple FROM table1 INNER JOIN table2).

1

Malheureusement, je crois que oui, mais cette syntaxe de jointure est plus difficile à lire et à maintenir.

Je sais qu'avec MSSQL, il n'y a pas de différence de performance entre ces deux méthodes de jointure, mais laquelle est la plus facile à comprendre?

SELECT table1.id, table2.id,* 
FROM table1, table2 
WHERE table1.id = table2.id 


SELECT 
table1.id, 
table2.id, 
* 
FROM table1 
    INNER JOIN table2 
    ON table1.id = table2.id 
2

Faisant suite à StingyJack ...

SELECT 
    table1.id, 
    table2.id, 
    * 
FROM 
    table1 
    INNER JOIN 
    table2 ON table1.id = table2.id 
WHERE 
    table1.column = 'bob' 

SELECT table1.id, table2.id,* FROM table1, table2 WHERE table1.id = table2.id and table1.column = 'bob' 

Où est le JOIN? Où est le filtre?

unissent leurs forces aussi une certaine discipline et le contrôle de base: plus facile Afin d'éviter la jointure croisée ou partielle rejoint

+0

Ouais ... Je me sentais paresseux et je n'ai pas donné une réponse plus illustrée. Merci. =) – StingyJack