2016-12-13 5 views
0

HI! J'ai un problème avec cette requête dans le langage MARIADB. Je veux faire une intersection avec le même champ mais avec deux valeurs. Le problème est que je ne peux pas utiliser la requête INTERSECT. Comment puis-je le faire?? J'ai essayé avec exist et jointure interne mais cela ne fonctionne toujours pas.requête Intersect dans 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'))); 

MERCI !!

+0

Je ne vois pas et la différence entre les deux requête. Quel résultat espérez-vous obtenir? Après intersection, avez-vous besoin de ''('' parce que vous ne l'avez pas fermé, donc soit les deux requêtes doivent être entourées de ''()' ', soit pas plus que –

+0

Mira tengo al director alejandro amenabar con dos actores (tom croisière et penelope cruz) ya pedro almodobar con solamente penelope cruz.quiero que consulta saque la intersección, es decir, solamente un 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 répondeur. Si quieres puedes USAR la versión en español http://es.stackoverflow.com/. Ahora como te dije, no hay diferencia Entre esos dos requête. Debes proveer Source de données et attendu Sortie para saber que necesitas –

Répondre

0

d'abord essayer comme ça, pour vérifier que vous avez tous les acteurs. Je dois ajouter un codactor si vous avez des acteurs avec le même nom.

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

Puis ajouter GROUP BY voir quel acteur sont dans les films des deux réalisateurs.

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

Êtes-vous sûr dans le tableau 'champ participacion' 'acteur 'est la table FK to' actors'? n'a pas de sens, devrait être 'codactor'. –

+0

Ce code fonctionnait !! Merci beaucoup!! –

+0

Pourriez-vous me expliquer pourquoi utilisez-vous ayant le nombre coddirector distinct = 2? Je ne comprends pas la raison. Merci beaucoup!! –