X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Подстановка значений средствами SQL
FeDeRaL_mw
FeDeRaL_mw
Topic Starter сообщение 27.11.2013, 15:39; Ответить: FeDeRaL_mw
Сообщение #1


Столкнулся с ситуацией - есть таблица, в ней внешний ключ. Вместо id этого ключа нужно было подставить его значение из таблицы. С этим справился благодаря INNER JOIN.
Теперь задача несколько усложнилась - таблица с двумя внешними ключами. Вместо id этих ключей надо подставить их значения из двух разных таблиц. Возможно ли это организовать средствами языка SQL?

Для тех кто не понял о чём я, выкладываю картинки:

[img]http://s3.hostingkartinok.com/uploads/images/2013/11/12e3b58a29615544d8b01d904a9c0283.png[/img]

[img]http://s3.hostingkartinok.com/uploads/images/2013/11/14e6a11a0a7cf46f63aea960f38e4f63.png[/img]
Есть оценка и id студентов, и id предмета. Заменить id на значения.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FeDeRaL_mw
FeDeRaL_mw
Topic Starter сообщение 27.11.2013, 16:11; Ответить: FeDeRaL_mw
Сообщение #2


Нашёл решение в инете - воспользоваться MS Access. Создал аналогичные таблички, сгенерировал запрос и посмотрел SQL код.

Вышло:
SELECT students.familiya, students.imya, students.otchestvo, subjects.nazvanie_sub, ocenki.ocenka
FROM subjects
INNER JOIN (
students
INNER JOIN ocenki ON students.id_student = ocenki.id_student
) ON subjects.id_subject = ocenki.id_subject;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 28.11.2013, 11:47; Ответить: fedornabilkin
Сообщение #3


Ничего не надо заменять, вполне реально два LEFT JOIN использовать.
Не могу ничего сказать по эффективности, но я использую и ничего страшного вроде.
В твоем случае наверно лучше будет выбирать таблицу оценок и к ней уже лепить студентов и предметы.

Например вот так
  SELECT `o`.`ocenka`, `s`.`familiya`, `s`.`imya`, `s`.`otchestvo`, `sub`.`nazvanie_sub`
  FROM `ocenka` o
  LEFT JOIN `students` s ON `o`.`id_student` = `s`.`id_student`
  LEFT JOIN `subjects` sub ON `o`.`id_subject` = `sub`.`id_subject`


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыБаза товаров (opencart) SQL 70к+ товаров
Инструменты для дома, строительное и производственное оборудование
5 getdump 5633 1.9.2021, 2:04
автор: WebSniper
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыWeb-разработка (C++/PHP/SQL/JS/Bootstrap). HighLoad проекты.
0 DF™ 1434 28.7.2020, 13:24
автор: DF™
Открытая тема (нет новых ответов) Web программирование на С/С++/PHP/MySQL/SQL, высоконагруженные проекты
Есть наработки в области бирж трафика, топов, тизеров, видео cj-тубов
4 DFService 3351 8.4.2020, 18:02
автор: DFService
Горячая тема (нет новых ответов) Разработка сайтов "под ключ" | Языки: PHP; JS; SQL (MySQL); HTML; CSS | CMS: WP; DLE; Joomla; 1-C
Также полный комплект дизайнерских услуг
82 EmpireWebBuilding 42059 11.2.2016, 13:27
автор: x64
Открытая тема (нет новых ответов) Как средствами CSS сделать высоту блока больше или равной высоте контейнера?
4 S0meT1me 6400 30.7.2014, 9:36
автор: -Den1xxx-


 



RSS Текстовая версия Сейчас: 20.4.2024, 20:00
Дизайн