SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 31.10.2011 18:39:47

XuLLlHuK
Участник
Зарегистрирован: 31.10.2011
Сообщений: 5

Получение данных из двух разных таблиц

Добрый вечер коллеги!
У меня такая задача:имеются две таблицы, в одной из них имеется колонка CITY_ID, в другой CITY_ID и CITY_NAME. Метод из Java получает данные из колонки CITY_ID в первой таблице. Вопрос: можно ли в SQL сделать так, чтобы метод получал из БД CITY_ID из первой таблицы и в соответствии ему-CITY_NAME из другой? Какими средствами это можно сделать(запрос, view и пр.)?

Заранее благодарен!

Отредактированно XuLLlHuK (31.10.2011 18:43:52)

Неактивен

 

#2 31.10.2011 18:45:02

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Получение данных из двух разных таблиц

Добрый вечер.
Не вполне понятно, в чем именно вопрос, уточните пожалуйста.
Получить CITY_NAME по CITY_ID -

select CITY_NAME from TABLE2 where CITY_ID=АЙДИ_ГОРОДА_ПРИШЕДШИЙ_ИЗВНЕ

Если хотите получить все соответствия айди и названий города, то
select CITY_ID,CITY_NAME from TABLE2;

Отредактированно deadka (31.10.2011 18:45:43)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 31.10.2011 18:58:04

XuLLlHuK
Участник
Зарегистрирован: 31.10.2011
Сообщений: 5

Re: Получение данных из двух разных таблиц

Грубо говоря, есть таблица T_COMPANY - данные о компании(COMPANY_ID, CITY_ID, NAME и т.п.) и таблица T_CITIES - данные о городах(CITY_ID, CITY_NAME, POPULATION и т.п.). Метод получает CITY_ID из T_COMPANY и должен получить CITY_NAME из T_CITIES, в соответствии ID города.
Метод не хочется нагружать лишними циклами по определению названия города по ID...


Забыл уточнить: метод получает весь список данных из таблиц.

Отредактированно XuLLlHuK (31.10.2011 19:03:18)

Неактивен

 

#4 31.10.2011 19:04:25

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Получение данных из двух разных таблиц

Если в метод приходит одна переменная, содержащая CITY_ID, назовём ее nCityID, то Вы можете получить
CITY_NAME запросом select CITY_NAME from T_CITIES where CITY_ID=nCityID. При наличии индекса на поле CITY_ID в таблице T_CITIES, выборка будет проходить мгновенно.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 31.10.2011 19:19:47

XuLLlHuK
Участник
Зарегистрирован: 31.10.2011
Сообщений: 5

Re: Получение данных из двух разных таблиц

У меня получился такой вот запрос в методе:


select * from T_COMPANY;
select CITY_NAME from T_CITIES where city_id = t_company.city_id;
 

Но результат у колонки CITY_NAME = null.
Что я не так сделал?

Неактивен

 

#6 31.10.2011 19:22:27

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Получение данных из двух разных таблиц

А что находится в t_company.city_id?

Вот так
select CITY_NAME from T_CITIES where city_id = 1;
или так
select CITY_NAME from T_CITIES where city_id = 2;
должно сработать (при наличии таких id в таблице, конечно)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 31.10.2011 19:26:51

XuLLlHuK
Участник
Зарегистрирован: 31.10.2011
Сообщений: 5

Re: Получение данных из двух разных таблиц

такие же city_id как в t_cities.city_id.

Неактивен

 

#8 31.10.2011 19:53:37

XuLLlHuK
Участник
Зарегистрирован: 31.10.2011
Сообщений: 5

Re: Получение данных из двух разных таблиц

Решил задачку:


select company.*, (select city_name from t_cities where city_id = company.city_id)city from t_company company;
 


Похоже я поспешил:
ORA-00933: SQL command not properly ended

Как это лечить?

Отредактированно XuLLlHuK (31.10.2011 20:36:56)

Неактивен

 

#9 31.10.2011 23:40:51

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Получение данных из двух разных таблиц

Вообще приведенный Вами запрос выглядит корректно (разве что подзапрос возвращает более, чем одну строку в каком-то случае). Но с этим Вам на оракловый форум wink.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson