powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос
13 сообщений из 13, страница 1 из 1
Помогите написать запрос
    #38942151
amf1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблица в БД "kino"
2 поля: название фильма "title" и актер играющий роль "actor"
нужно выбрать все фильмы где играют роль определенные 2 актера вместе
вот мой запрос, он конечно не работает(
SELECT `title` FROM `kino` WHERE `actor`="Вася" AND `actor`="Петя"
помогите исправить запрос?
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38942177
Код: sql
1.
2.
3.
4.
5.
6.
DROP TABLE IF EXISTS "kino";
CREATE TABLE "kino" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "title" TEXT NOT NULL , "actor" TEXT NOT NULL );
INSERT INTO "kino" VALUES(1,'firstKino','firstActor');
INSERT INTO "kino" VALUES(2,'firstKino','secondActor');
INSERT INTO "kino" VALUES(3,'secondKino','secondActor');
INSERT INTO "kino" VALUES(4,'thirdKino','firstActor');



Код: sql
1.
2.
3.
4.
SELECT title, count(title) AS count FROM kino
WHERE actor = 'firstActor' OR actor = 'secondActor'
GROUP BY title
HAVING count > 1
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38942197
гыыы... навсякий! ;)
Код: sql
1.
2.
3.
4.
5.
SELECT title, group_concat(actor) actors 
FROM kino
WHERE actor = 'firstActor' OR actor = 'secondActor'
GROUP BY title
HAVING count(*) > 1
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38942307
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не нужно! переделай структуру пока не поздно

Таблица 1: film(id, title,.. прочая лабуда типа даты выхода, кассовых сборов итд итп)
Таблица 2: actor(id,name, прочая лабуда типа возраст, сексуальные предпочтения итд итп)
Таблица 3: actorinfilm (id, id_film, id_actor)

Код: sql
1.
2.
3.
4.
5.
SELECT f.title, ... FROM film AS f
INNER JOIN actorinfilm AS aif ON f.id = aif.id_film
WHERE aif.id_actor IN (<id_actor1>, <id_actor2>)
GROUP BY aif.id_film
HAVING count(*) > 1



Модератор: Тема перенесена из форума "PHP, Perl, Python".
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38942433
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже напишу (для веб-приложения) :-)

Код: plsql
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.
CREATE TABLE kino 
( 
    MovieName VARCHAR(50) NOT NULL, 
    Actor VARCHAR(50) NOT NULL, 
    PRIMARY KEY (MovieName, Actor), 
    INDEX ( MovieName(20) ), 
    INDEX ( Actor(20) )
) ENGINE InnoDB;


INSERT INTO kino 
(MovieName, Actor)
VALUES
("Movie01", "Actor01"),
("Movie02", "Actor01"),
("Movie03", "Actor01"),
("Movie04", "Actor02"),
("Movie05", "Actor03"),
("Movie01", "Actor02"),
("Movie02", "Actor03"),
("Movie02", "Actor02"),
("Movie04", "Actor04")
;

SELECT t1.MovieName, t1.Actor, t2.Actor, t3.Actor
FROM kino t1, kino t2, kino t3
WHERE t1.MovieName = t2.MovieName AND t1.MovieName=t3.MovieName AND 
      t1.Actor='Actor01' AND t2.Actor='Actor02' AND t3.Actor='Actor03';
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38942435
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amf1kесть таблица в БД "kino"
2 поля: название фильма "title" и актер играющий роль "actor"
нужно выбрать все фильмы где играют роль определенные 2 актера вместе
вот мой запрос, он конечно не работает(
SELECT `title` FROM `kino` WHERE `actor`="Вася" AND `actor`="Петя"
помогите исправить запрос?

Тебе надо сначала свою БД исправить, нормализацию произвести.
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38942454
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,

а если будет 5-10 актеров? будете "джоинить" таблицу 10 раз? А если у фильмов одинаковое название, у вас там первичный ключ висит?
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38942518
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

1) ключ (movie name, actor), т.е. уникальна запись фильм + актер: фильмы с одинаковым названием записывать можно,
но дублирующая запись фильм+актер не пройдет
2) джоины использовала потому что группировка уже была :-)
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38942536
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще оч. хотелось написать денормализацию, а как ее без джоинов напишешь?
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38944931
amf1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как-то так...,
спасибо большое) а если у меня будут одинаковые название фильма, тогда ведь запрос будет некорректен?
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38945007
amf1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mini.weblab,
Пример:

id - 1
movie - Герой
actor - Даша

id - 2
movie - Герой
actor - Вася

id - 3
movie - Герой (Это уже другой фильм "Злодей")
actor - Вася

id - 4
movie - Герой (Это уже другой фильм "Злодей")
actor - Катя

id - 5
movie - Санта Барбара
actor - Даша

id - 6
movie - Санта Барбара
actor - Вася

id - 7
movie - Злодей
actor - Петя

id - 8
movie - Герой
actor - Петя

id - 9
movie - Герой
actor - Вася

итог 4 фильма:
Фильм "Злодей": актеры - Даша,Вася,Петя
Фильм "Злодей другой фильм": актеры - Вася,Катя
Фильм "Санта Барбара": актеры - Даша,Вася
Фильм "Герой": актеры - Петя,Вася

например нужно вытащить фильмы Васи и Пети, где они играли роль вмете
получаем 2 фильма: "Злодей","Герой"
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38945008
amf1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извини, маленькая поправка, там вместо первых 4 фильмов Герой фильмы Злодей
...
Рейтинг: 0 / 0
Помогите написать запрос
    #38945087
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amf1k,
1) сначала нужно определиться с данными: если в таблице два столбца(фильм, актер), то записи различаются только по этим двум признакам. Если такая таблица устраивает, то

2) создаем ключ(фильм, актер), чтобы избежать дубликатов (реляционная таблица)

3) Допустим мы узнаем, что есть разные фильмы с одним и тем же названием, и нам нужно выводить информацию отдельно по каждому фильму. т.е. получается, что начальная таблица не решает поставленную задачу. Что можно сделать? Можно добавить столбец фильм_идентити (с уникальным идентификатором фильма). Новая таблица: (фильм_идентити, фильм, актер)

4) Дальше мы узнаем, что у нас два актера Пети Иванова. Что делать? Создаем дополнительный столбец (актер_идентити)
Опять же новая реляционная таблица: (фильм_идентити, фильм, актер_идентити, актер)

5) когда все ясно с таблицей, можно переходить к рассмотрению предложения SharuPoNemnogu о нормализации (иначе говоря, мы должны решить как же нам хранить наши данные)

6) когда мы окончательно определились со структурой хранения данных, можно начинать писать запросы
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]