[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите написать запрос
amf1k
есть таблица в БД "kino"
2 поля: название фильма "title" и актер играющий роль "actor"
нужно выбрать все фильмы где играют роль определенные 2 актера вместе
вот мой запрос, он конечно не работает(
SELECT `title` FROM `kino` WHERE `actor`="Вася" AND `actor`="Петя"
помогите исправить запрос?
Kusss
а в актерах как записываются данные, через какой "разделитель" ?
А вообще тут не верная структура.
Минимум 3 таблицы должно быть. Фильмы, актеры и связующая таблица: id_фильма id_актера. И жизнь сразу станет проще.
nugle
[amf1k]

приложи фото таблицы или структуру

Kusss

Там будет тоже самое, только с id smile.gif
Kusss
зато все остальное будет без "костылей", и "заднего двора"
AllesKlar
amf1k
ты не оттуда начал.
Сначала пишется ТЗ, потом создается структура базы, и только потом, после того, как база продумана и спроектирована, уже пишется код.

Иначе ты будешь 100 раз переписывать.
Твоя вчерашняя тема про 2 таблицы уже неактуальна (впрочем, тебе там сразу об этом сказали)
Эта тема тоже. Смысл тебя учить плохому?
В фильме же не снимается только один актер.

Так что забрось пока код, опиши ТЗ, продумай структуру базы, и ТЗ и базу потом выкатывай сюда.
Иначе это будет мартышкин труд.

_____________
[продано копирайтерам]
Valick
Цитата (nugle @ 22.04.2015 - 16:22)
Там будет тоже самое, только с id

нет не будет

_____________
Стимулятор ~yoomoney - 41001303250491
amf1k
Цитата (AllesKlar @ 22.04.2015 - 19:44)
amf1k
ты не оттуда начал.
Сначала пишется ТЗ, потом создается структура базы, и только потом, после того, как база продумана и спроектирована, уже пишется код.

Иначе ты будешь 100 раз переписывать.
Твоя вчерашняя тема про 2 таблицы уже неактуальна (впрочем, тебе там сразу об этом сказали)
Эта тема тоже. Смысл тебя учить плохому?
В фильме же не снимается только один актер.

Так что забрось пока код, опиши ТЗ, продумай структуру базы, и ТЗ и базу потом выкатывай сюда.
Иначе это будет мартышкин труд.

Вот 3 таблицы:
1-я таблица фильмы
id,title (название фильма)
2-я таблица актеры
id,name (имя актера)
3-я таблица роли (то есть, фильм и актеры. которые играют роль в этом фильме)
title (название фильма), actor (актер, который играет роль в этом фильме)
Вопрос тот же?
amf1k
Цитата (Valick @ 22.04.2015 - 21:37)
Цитата (nugle @ 22.04.2015 - 16:22)
Там будет тоже самое, только с id

нет не будет

Пример:

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 фильма: "Злодей","Герой"
Valick
movie
mid | title
1 | "Злодей"
2 | "Злодей другой фильм"
3 | "Санта Барбара"
4 | "Герой"

actor
aid | name
1 | Даша
2 | Вася
3 | Петя
4 | Катя

role
mid | aid
1 | 1
1 | 2
1 | 3
2 | 2
2 | 4
3 | 1
3 | 2
4 | 2
4 | 3

Вот так можно достать только названия фильмов (имена актёров мы и так знаем)
SELECT mid, title
FROM role r
LEFT JOIN movie m USING(mid)
WHERE r.aid IN (2,3)
GROUP BY r.mid
HAVING COUNT(r.aid) > 1

А вот так можно достать названия фильмов и весь актёрский состав (имена искомых актёров можно выделить из общего списка другим цветом)
SELECT mid, aid, title, name
FROM (SELECT mid
FROM role
WHERE aid IN (2,3)
GROUP BY mid
HAVING COUNT(aid) > 1) r
LEFT JOIN role USING(mid)
LEFT JOIN movie USING(mid)
LEFT JOIN actor USING(aid)


_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.