Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> select из нескольких таблиц 
V
    Опции темы
ОВиталий
Дата 19.3.2010, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



есть Запрос:  "SELECT * FROM users WHERE u_id IN (32, 59,89,60 ...)"

в ответ получу поля u_id, rating_id, photo_id - айдишки данных с других таблиц.  как должен выглядеть запрос, что бы вместо id-шек, получить их значение полей?
PM MAIL   Вверх
skyboy
Дата 19.3.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Код

SELECT table1.id, table2.value2, table3.value3
FROM table1
INNER JOIN table2
ON table2.id = table1.id2
INNER JOIN table3
ON table3.id = table2.id3
WHERE table1.id in (23,45,7,8,11,....)

учебник я тебе не заменю. но искать надо по "JOIN". что и означает "объединение". оно бывает внешним и внутренним.
внешнее(LEFT/RIGHT JOIN) когда каждой строчке из исходной таблицы не всегда найдется соответствующая строка из присоединяемой таблицы. и надо, чтоб исходная строка осталась в результате в любом случае.
внутреннее(INNER JOIN) когда записи, которые есть только в одной из таблиц, не нужны в результате.
PM MAIL   Вверх
Gluttton
Дата 19.3.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Цитата(ОВиталий @  19.3.2010,  22:18 Найти цитируемый пост)
как должен выглядеть запрос, что бы вместо id-шек, получить их значение полей? 

Для этого нужно связать таблицы...

Как правило таблицы связываються по первичному и внешнему ключам (т.е. связываються столбцы: первичный ключ одной таблицы и его внешний ключ другой таблицы)... Но это совершенно не правило (просто в самом общем случае происходит именно так)...

Связать таблицы можно явно и не явно...

Неявно таблицы связываються через условие (в примере с ключами - это условие равенства первичного и внешнего ключей) в предложении WHERE ...

Кроме того таблицы можно связать явно. Для этого используется предложение JOIN.
Явное связывание может быть внутренним (INNER JOIN) и внешним (OUTER LEFT JOIN, OUTER RIGHT JOIN, FULL JOIN, CROSS JOIN)...

Чисто технически явное внутренне связывание и не явное внутреннее связывание равносильны (просто при явном связывании код, как и намерения его автора, более прозрачны)...

Т.е. для того, что бы получить значения поля из другой таблицы, нужно:
- указать этот столбец в предложении SELECT;
- произвести связывание таблиц, например так WHERE table_a.p_key=table_b.f_key.


--------------------
Слава Україні!
PM MAIL   Вверх
ОВиталий
Дата 19.3.2010, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



спасибо!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.