Запрос данных из разных таблиц - PullRequest
0 голосов
/ 18 ноября 2008

Я использую такой запрос в моей базе данных postgres:

SELECT TableA.id FROM TableA , TableB WHERE TableA.id = 100;

Каждый TableA.id уникален (это автоинкремент), я получаю более 1 результата. Я что-то здесь упускаю?

Ответы [ 5 ]

7 голосов
/ 18 ноября 2008

Вам необходимо присоединиться:

SELECT TableA.ID from TableA
INNER JOIN TableB 
ON TableB.TableAID = TableA.ID 
WHERE TableA.ID = 100
6 голосов
/ 18 ноября 2008

Вы делаете перекрестное соединение - фактически каждая строка в TableB против единственной строки в TableA. Если вы также выберете что-то из TableB, это будет более очевидно :) Тот факт, что вы в настоящее время ничего не выбираете из TableB, не мешает парам (TableA, TableB) быть результатом объединения перед проекцией .

3 голосов
/ 18 ноября 2008

Вы получаете одну строку из TableA, но все строки из TableB. Возможно, вы имели в виду:

SELECT TableA.id FROM TableA, TableB WHERE TableA.id=TableB.id AND TableA.id = 100
1 голос
/ 18 ноября 2008

какова связь между таблицей A и таблицей B?

вам может потребоваться сделать что-то подобное

Где TableA.id = 100 И TableB.TableA_Id = TableA.id

0 голосов
/ 18 ноября 2008

Требуется объединение перед предложением where:

INNER JOIN TableB ON TableA.Id = TableB.Id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...