programing

마리아의 교차 쿼리DB

topblog 2023. 8. 1. 20:14
반응형

마리아의 교차 쿼리DB

MariaDB 언어로 된 이 쿼리에 문제가 있습니다.필드는 같지만 값이 두 개인 교차를 수행합니다.문제는 INTRESS 쿼리를 사용할 수 없다는 것입니다.

어떻게 해야 하나요?나는 존재와 내면의 결합을 시도해 보았지만 여전히 작동하지 않습니다.

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')));

INTERSECT 는 MariaDB 10.3.0에 도입되었습니다.

교차

교차 결과는 오른쪽과 왼쪽 SELECT 결과의 교차입니다. 즉, 두 결과 세트에 모두 있는 레코드만 작업 결과에 포함됩니다.

(SELECT e_name AS name, email FROM employees)
INTERSECT
(SELECT c_name AS name, email FROM customers);

당신의 질문에 대해서는 그대로 두셔도 됩니다.

일단 이렇게 해보세요, 배우들이 다 있는지 확인해보세요.같은 이름의 배우들이 있을 경우를 대비해 코닥터를 추가해야 합니다.

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

언급URL : https://stackoverflow.com/questions/41122168/intersect-query-in-mariadb

반응형