Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
10 / 6 / 6
Регистрация: 26.06.2017
Сообщений: 206

Выборка из таблиц бд Актеры и фильмы

03.08.2017, 00:23. Показов 5273. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Просьба помочь.

Имею три таблицы
Фильмы (Код фильма, Наименование, .....)
Актеры фильмов (Код актеров фильмов, Код фильма, Код актера)
Актеры (Код актера, Имя, Описание)

База данных прикреплена.

Мне нужно произвести выборку фильмов, в которых играют два заданных актера (условно актер 1 и актер 2) одновременно.
С тем условием, что я задаю, мне выдает все фильмы в которых играют оба актера, в том числе и по отдельности. Помогите пожалуйста.
Миниатюры
Выборка из таблиц бд Актеры и фильмы  
Вложения
Тип файла: 7z Files test.7z (16.8 Кб, 15 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.08.2017, 00:23
Ответы с готовыми решениями:

Коллекция (фильмы и актеры)
Ребят, нужно создать коллекцию(список всех фильмов, список всех актеров) и определить есть ли актер не сыгравший ни в одном фильме. А потом...

Выборка данных из нескольких таблиц. Аналитическая выборка данных
16 Для каждого отдела выбрать отношение зарплаты и комиссионных сотрудников отдела к объему продаж отдела. 17 *Выбрать список штатов в...

Выборка из 2 таблиц
Здравствуйте! Подскажите пож -как сделать выборку из 2 таблиц, надо из 1 и 2 выбрать все поля,делаю так: $resultcatt="SELECT...

4
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
03.08.2017, 06:35
Смотрите вспомогательные запросы А1_ (фильмы с 1), А2_ (фильмы с 2) и их пересечение А12_.
Вложения
Тип файла: zip Files test.zip (17.2 Кб, 26 просмотров)
1
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
03.08.2017, 07:52
Можно и одним запросом
SQL
1
2
3
4
5
6
7
8
9
10
SELECT Q1.[Код фильма]
FROM 
   (SELECT [Код фильма]
    FROM [Актеры фильмов]
    WHERE [Код актера]=1) AS Q1 
INNER JOIN
   (SELECT [Код фильма]
    FROM [Актеры фильмов]
    WHERE [Код актера]=2) AS Q2 
ON Q1.[Код фильма] = Q2.[Код фильма];
Но в некоторых версиях он может "самостоятельно" измениться и перестать работать... .
1
10 / 6 / 6
Регистрация: 26.06.2017
Сообщений: 206
03.08.2017, 13:24  [ТС]
Благодарю!
0
10 / 6 / 6
Регистрация: 26.06.2017
Сообщений: 206
19.08.2017, 15:46  [ТС]
Вдруг, кому-то пригодится.
Функция для C++ Builder, генерирующая множественный вложенный запрос, по типу того, что показал ltv_1953
Параметры - код файла(эта запись будет выбрана), тема, список кодов тэгов, список кодов актеров

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void __fastcall TForm1::MainTableMultiSelect(String KodFile, String TemaWHERE, TStringList *Kodi_Tagov, TStringList *Kodi_Akterov)
{
if(!Kodi_Tagov->Count && !Kodi_Akterov->Count)
    {
    RefreshMainTableAndMove(KodFile, TemaWHERE, "");
    return;
    }
ADOQuery1->SQL->Clear();
String sql="";
String podzapros, podzapros_next;
int nomer_podzapros=Kodi_Tagov->Count+Kodi_Akterov->Count;
for(int i=0; i<Kodi_Tagov->Count; i++)
    {
    podzapros="Q"+IntToStr(nomer_podzapros);
    podzapros_next="Q"+IntToStr(nomer_podzapros-1);
    if(Kodi_Akterov->Count==0 && i==(Kodi_Tagov->Count-1))      // (если актеры не заданы и это последняя запись) верхний вложенный запрос отличается
        sql="INNER JOIN ( \n( \n(SELECT [Код фильма] FROM [Тэги фильмов] WHERE [Код тэга]="+Kodi_Tagov->operator [](i)+")  AS "+podzapros+" \n" + sql;
            else sql="INNER JOIN( \n(SELECT [Код фильма] FROM [Тэги фильмов] WHERE [Код тэга]="+Kodi_Tagov->operator [](i)+")  AS "+podzapros+" \n" + sql + ")ON "+podzapros_next+".[Код фильма] = "+podzapros+".[Код фильма] \n";
    nomer_podzapros--;
    }
for(int i=0; i<Kodi_Akterov->Count; i++)
    {
    podzapros="Q"+IntToStr(nomer_podzapros);
    podzapros_next="Q"+IntToStr(nomer_podzapros-1);
    if(i==(Kodi_Akterov->Count-1))                  // (если это последняя запись) верхний вложенный запрос отличается
        sql="INNER JOIN ( \n( \n(SELECT [Код фильма] FROM [Актеры фильмов] WHERE [Код актера]="+Kodi_Akterov->operator [](i)+")  AS "+podzapros+" \n" + sql;
            else sql="INNER JOIN( \n(SELECT [Код фильма] FROM [Актеры фильмов] WHERE [Код актера]="+Kodi_Akterov->operator [](i)+")  AS "+podzapros+" \n" + sql + ")ON "+podzapros_next+".[Код фильма] = "+podzapros+".[Код фильма] \n";
    nomer_podzapros--;
    }
 
if(TemaWHERE!="") TemaWHERE="where "+TemaWHERE;            // добавление темы
sql="SELECT DISTINCT Фильмы.[Код фильма], Фильмы.Название, Фильмы.Путь, Темы.Наименование AS Тема, Фильмы.Тэги, Фильмы.Актеры, Фильмы.Описание \nFROM Темы "+sql+")\nINNER JOIN Фильмы ON "+podzapros+".[Код фильма] = Фильмы.[Код фильма]\n) ON Темы.[Код темы] = Фильмы.[Код темы]\n"+TemaWHERE+"\n ORDER BY Фильмы.Название";
ADOQuery1->SQL->Add(sql);
ADOQuery1->Open();
 
doADOQuery1AfterScroll=false;
if(KodFile!="")                     // переход на указанную запись
    {
    DBGrid1->SelectedIndex=0;
    int kod_file=StrToInt(KodFile);
    for(int i=0; i<DataSource1->DataSet->RecordCount && StrToInt(DBGrid1->SelectedField->Text)!=kod_file; i++)
        {
        ADOQuery1->Next();
        }
    }
doADOQuery1AfterScroll=true;
ADOQuery1AfterScroll(DataSource1->DataSet);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2017, 15:46
Помогаю со студенческими работами здесь

Выборка из таблиц
Здравствуйте! У меня есть таблицы: Table1(Pole1,Pole2,Pole3,Pole4) Table2(Pole1,Pole2,Pole3) Table3(Pole1,Pole2) Table1.Pole2...

Выборка из 2х таблиц БД
Здравствуйте дорогие киберфорумчане) Не могу решить интересную делему. Во общем суть делемы такая. Есть две таблицы базы данных...

Выборка из 2 таблиц
Приветствую, делаю комментарии наткнулся на такую проблему. Суть в том что таблица comments содержит данные комментария, текст дату ид...

Выборка из 3-х таблиц
Здравсвуйте! У меня 3 таблицы ПрограммноеОбеспечение, НаименованиеТехники, Связка Хочу выбрать2 записи из первой таблицы ...

Выборка из 2 таблиц
Таблица base в ней ячейки user, nameurl Таблица people в ней ячейки user, admin $joinuser - авторизованный пользователь Необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru