2011-01-16 1 views
2

Malheureusement, je n'ai pas accès à une base de données Ingres pour l'instant et je me demande simplement si la syntaxe de jointure interne qui s'applique en SQL standard s'applique également à Ingres? Je m'interroge aussi sur l'équivalent de la jointure interne.Syntaxe de SQL ingres

Par exemple, les deux instructions SQL suivantes sont-elles valides?

Déclaration 1:

SELECT a.Value1, 
     a.Value2, 
     b.Value3 
FROM Tabletype1 a, Tabletype2 b, Tabletype3 c 
WHERE a.Value1 = b.Value4 
AND b.Tabletype3_Num = c.Tabletype3_Num 
AND p.Value5 = 'Randomvalue' 
AND b.Value3 > 20 
     AND (a.Tabletype1Format = 'Random' OR a.Tabletype1Format = 'Random1') 

Déclaration 2:

SELECT a.Value1, 
     a.Value2, 
     b.Value3 
FROM Tabletype1 a 
     INNER JOIN Tabletype2 b 
      ON a.Value1 = b.Value4 
     INNER JOIN Tabletype3 c 
      ON b.Tabletype3_Num = c.Tabletype3_Num 
WHERE c.Value5 = 'Randomvalue' 
     AND b.Value3 > 20 
     AND (a.Tabletype1Format = 'Random' OR a.Tabletype1Format = 'Random1') 
+0

Veuillez mettre le code en retrait en tant que code. Tapez-le comme vous l'avez fait, puis surlignez chaque fragment, puis cliquez sur le bouton 'indent', marqué '' {} ''. –

+0

En allusion à ** goto est mal **, je souhaite qu'il y ait ** joindre des tables par virgule est mal ** –

Répondre

4

En réponse à la question de l'OP effectivement demandé, Ingres absolument, bien sûr, ne doute pleinement le soutien Les deux formes de spécification de jointure, et dans tous les cas que j'ai jamais pris la peine de regarder, il arrive exactement avec le même plan de requête.

Donc, ma réponse en fin de compte est de faire ce que vous pensez est préférable dans votre situation. Cela fonctionnera bien.

+0

Pour référence, voici un guide détaillé de la syntaxe SQL avec ingres - il couvre JOINs: http://www.r20.nl/TheSQLGuidetoIngres-AppendixA.pdf –

3

Les deux formes fonctionnent très bien dans Ingres, bien que vous apprécierez la syntaxe SQL92 ANSI est plus préférable pour

  1. lisibilité
  2. la clarté
  3. pour aider l'optimiseur de requêtes savoir où la jointure arrive vraiment

Cette question est très similaire à SQL Inner Join syntax

+0

Par syntaxe ANSI SQL92 vous voulez dire, la jointure interne .... sur .. la syntaxe? Etes-vous sûr que cette norme est définitivement la norme "standard" dans INGRES? – santdrog

+0

C'est la norme ANSI, qui peut ne pas signifier beaucoup pour certains, mais c'est une norme pour la clarté et la prévisibilité. Comme l'indique la question liée, les développeurs Ingres/Oracle peuvent avoir tendance à utiliser la syntaxe non-ANSI, mais elle est en voie de disparition en général. – RichardTheKiwi

+0

Je suis conscient du lien - cependant, il ne confirme rien malheureusement. Donc vous pouvez confirmer que la syntaxe dans l'instruction 2 est définitivement compatible avec les implémentations par défaut d'ingres? – santdrog