2011-01-28 2 views

Répondre

0
SELECT * FROM a JOIN b JOIN c JOIN d 

Cela va faire un produit cartésien car il est pas rejoindre conditions, mais a a été jointe à trois tables. Peut-être que votre question doit être plus spécifique.

+2

Cette syntaxe génère une erreur car le mot clé JOIN requiert une condition ON. Pour un produit cartésien, vous avez besoin de CROSS JOIN (qui ne nécessite pas de condition ON) –

+0

@a_horse_with_no_name: vous avez complètement raison, je n'avais pas vu que c'était spécifique à Oracle. Je pensais à SQLite (voir [this] (http://www.sqlite.org/lang_select.html#fromclause): * Si l'op-join est "CROSS JOIN", "INNER JOIN", "JOIN" ou un virgule (",") et il n'y a pas de clause ON ou USING, alors le résultat de la jointure est simplement le produit cartésien des ensembles de données de gauche et de droite. *) – Benoit

+0

Ceci n'est pas spécifique à Oracle. JOIN ... ON est la norme ANSI SQL. Je suis surpris que cela fonctionne dans SQLite sans ON. Jamais vu cela auparavant dans d'autres SGBD (Postgres, Oracle, DB2, H2, HSQLDB) –

3

Cela pourrait être ce que vous recherchez.

select * from Table1 a 
join table2 b on (a.column = b.column) 
join table3 c on (a.column = c.column) 

Mais je vous suggère de prendre un tutoriel sur la façon d'écrire des requêtes pour diminuer les temps d'arrêt sur les instructions de base.

0
select * from table1 a,table2 b,table3 c where a.col=b.col and a.col=c.col