Как получить совпадающие строки из двух таблиц в SQL, без повторных вызовов из Java - PullRequest
2 голосов
/ 05 марта 2011

Мне нужно прочитать набор строк из таблицы (скажем, A), содержащей уникальный идентификатор для каждой строки (скажем, id_value).

Теперь, используя это id_value, я должен получить строки из другой таблицы (скажемB).

Я использую Java, поэтому мой код:

ResultSet rs= [ Code to get rows from table A ] ;

while(rs.next())
{
ResultSet rs2= [Code to get rows from table B using the id_value from table A using rs.getString("id_value");]; 
}

Вышеприведенный запрос, если конечно, медленный, так как количество строк может быть больше 500 за один раз в таблице A.

Кто-нибудь знает лучшее и быстрое решение этой проблемы или как сделать это в одном запросе ??

Ответы [ 2 ]

3 голосов
/ 05 марта 2011

Вы должны прочитать о соединениях в SQL: http://en.wikipedia.org/wiki/Join_(SQL)

Вы хотите сделать что-то вроде этого:

SELECT a.value_1, a.value_2, b.value_1, b.value_2
FROM table_a AS a
LEFT JOIN table_b AS b
ON a.id_value = b.table_a_id
WHERE a.value_1 = "something"

Было бы легче помочь вам, если бы вызапросы, однако.

1 голос
/ 05 марта 2011

Вы можете использовать левое соединение:

  SELECT table1.*, table2.* from table1
  LEFT JOIN table2 ON table2.id = table1.table2id
  WHERE table1.ID = 123;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...