2008-11-18 11 views
0

J'utilise une requête comme ceci sur ma base de données Postgres,données Interrogation de différentes tables

SELECT TableA.id DE TableA, TableB OU TableA.id = 100;

Chaque TableA.id est unique (c'est un auto-incrément), j'obtiens plus de 1 résultat. Est-ce que je manque quelque chose ici?

Répondre

6

Vous effectuez une jointure croisée - en fait, chaque ligne de la TableB est comparée à la ligne unique de la TableA. Si vous sélectionnez aussi quelque chose de la TableB, cela sera plus évident :) Le fait que vous ne sélectionniez actuellement rien de TableB n'empêche pas les paires (TableA, TableB) d'être le résultat de la jointure, avant la projection .

7

Vous avez besoin d'une jointure:

SELECT TableA.ID from TableA 
INNER JOIN TableB 
ON TableB.TableAID = TableA.ID 
WHERE TableA.ID = 100 
1

qui est la relation entre TableA et TableB?

vous pourriez avoir besoin de faire quelque chose comme ça

Où TableA.id = 100 Et TableB.TableA_Id = TableA.id

3

Vous obtenez une ligne de TableA mais toutes les lignes de TableB. Peut-être que vous vouliez dire:

SELECT TableA.id FROM TableA, TableB WHERE TableA.id=TableB.id AND TableA.id = 100 
0

Vous avez besoin d'une jointure avant la clause where:

INNER JOIN TableB ON TableA.Id = TableB.Id 
Questions connexes