2016-12-13 12 views
0

HI! У меня проблема с этим запросом на языке MARIADB. Я хочу сделать пересечение с тем же полем, но с двумя значениями. Проблема в том, что я не могу использовать запрос INTERSECT. Как мне это сделать?? Я попытался с существующим и внутренним соединением, но он все еще не работает.Запрос Intersect в mariadb

SELECT nombre 
FROM actores 
WHERE codactor IN (SELECT actor 
        FROM participacion 
        WHERE (titulo,año) IN (SELECT titulo, año 
              FROM peliculas 
              WHERE director IN (SELECT coddirector 
                   FROM directores d 
                   WHERE d.nombre='Alejandro' 
                   AND d.apellido='Amenabar'))) 

INTERSECT 

SELECT nombre 
FROM actores 
WHERE codactor IN (SELECT actor 
        FROM participacion 
        WHERE (titulo,año) IN (SELECT titulo,año 
              FROM peliculas 
              WHERE director in (SELECT coddirector 
                   from directores p 
                   WHERE p.nombre='Pedro' 
                    AND p.apellido='Almodobar'))); 

СПАСИБО !!

+0

Я не вижу и разницу между обоими запросами. Какой результат вы ожидаете получить? После пересечения вам нужно '' (''? Потому что вы его не закрыли. Таким образом, либо оба запроса должны быть заключены в' '()'', либо нет. –

+0

Buenas quizá me entiendas mejor en español. Mira tengo al director alejandro amenabar con dos actores (tom cruise y penelope cruz) ya pedro almodobar con solamente penelope cruz. Y quiero que mi consulta saque la intersección, es decir, solamente a penelope cruz. Muchas gracias –

+0

Si hablo español, pero este sitio se debe escribir en «ingles», de otro modo solo unos pocos te pueden responder. Si quieres puedes usar la versión en español http://es.stackoverflow.com/. Ahora como te dije, no hay diferencia entre esos dos query. и ожидаемый результат для saber que necesitas. –

ответ

0

Сначала попробуйте это, чтобы проверить, что у вас есть все действующие лица. Я должен добавить codactor, если у вас есть актеры с одинаковым именем.

SELECT a.codactor, a.nombre -- add ', *' to see all columns and test query is ok. 
FROM actores a 
JOIN participacion p 
    ON a.codactor = p.actor 
JOIN peliculas m 
    ON p.titulo = m.titulo 
AND p.ano = m.ano 
JOIN directores d 
    ON p.director = d.coddirector 
WHERE (d.nombre = 'Alejandro' and d.apellido = 'Amenabar') 
    OR (d.nombre = 'Pedro'  and d.apellido = 'Almodobar') 

Затем добавить GROUP BY чтобы увидеть, какой актер в фильмах из обоих директоров.

GROUP BY a.codactor, a.nombre 
HAVING COUNT(DISTINCT coddirector) = 2 
+0

Вы уверены, что в поле '' участие в таблице' 'actor' - это таблица FK для« актеров »? не имеет смысла, должен быть 'codactor'. –

+0

Этот код работал! Большое спасибо!! –

+0

Не могли бы вы объяснить мне, почему вы используете подсчет различных coddirector = 2? Я не понимаю причину. Большое спасибо!! –