Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2011, 13:53   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию Выбрать данные из 2 таблиц одним запросом

Есть 2 таблицы, например:

Первая: | ID | col1 | col2 | col3 | col4 |
Вторая: | ID | col_1 | col_2 | col_3 | col_4 |

В первой и второй таблицы хранятся одинаковые ID. Поиск осуществляется именно по полю ID. Два вопроса:

1) Мне нужно выбрать какие-либо данные из 1 и из 2 таблицы одним запросом. Как можно осуществить? Например, нужно выбрать `col1`, `col3` из 1-ой таблицы и `col_2`, `col_4` из второй таблицы, там где ID будет "12345". Как будет выглядеть такой запрос?

2) Второй вопрос касается структуры. Читал про индексы и ключи. Пишут, что они ускоряют работу (поиск по базе). Стоит ли ставить Index / Key в обеих таблицах на поле ID? И они (ключи, индексы) разные бывают. Что именно ставить?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 08.02.2011, 14:50   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT T1.col1,T1.col3,T2.col_2,T2.col_4
  FROM Tablica1 AS T1,Tablica2 AS T2
  WHERE T1.ID=12345 AND T1.ID=T2.ID
Второе сильно зависит от объема информации в таблицах и вида SQL базы. Если объём информации относительно небольшой, то практически вы разницы не заметите. Читайте документацию по вашей базе данных и принимайте решение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 08.02.2011 в 14:54.
Аватар вне форума Ответить с цитированием
Старый 08.02.2011, 15:48   #3
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

А что такое T1 и T2?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 08.02.2011, 15:59   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вместо Tablica1 поставте имя вашей таблицы, T1 - алиас таблицы (или сокращенное имя таблицы) - используется в запросе для сокращения записи. Без него вместо T1.ID пришлось бы писать Tablica1.ID. Для Tablica2 аналогично. Изучите синтаксис SQL-языка, иначе даже простейшего запроса не напишите
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 08.02.2011 в 16:24.
Аватар вне форума Ответить с цитированием
Старый 16.02.2011, 15:29   #5
Porfiriys
 
Регистрация: 31.01.2009
Сообщений: 6
По умолчанию

На счет первого вопроса правильно ответил Аватар.
А вот чтобы ответить на второй вопрос - нужно знать о том, какую СУБД вы используете. Если в общих чертах - то индексы использовать нужно, они действительно ускорят работу (при больших объемах данных).
Например, Oracle автоматически создает индекс на первичный ключ. Так что скажите, для какой СУБД вы запрос конструируете?
Porfiriys вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление двух строк одним запросом L_M SQL, базы данных 5 03.02.2011 02:01
Добавить строку в longtext одним Update запросом Alar SQL, базы данных 1 02.02.2011 18:11
Инвертировать значение поля (INT) одним запросом InternetStranger SQL, базы данных 7 04.08.2010 11:50
как выбрать несовпадающие данные из двух таблиц Tatu Microsoft Office Access 2 16.03.2010 20:41
BETWEEN и LIKE одним запросом Pinya SQL, базы данных 9 19.08.2008 11:30