Valeurs communes à deux autres valeurs

Résolu/Fermé
Maxdaless Messages postés 4 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 24 septembre 2018 - 23 sept. 2018 à 18:39
Maxdaless Messages postés 4 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 24 septembre 2018 - 24 sept. 2018 à 10:27
Bonjour,

Je suis novice en language SQL et je ne trouve pas de solution à mon problème (représenté sur le schéma suivant) depuis quelques jours.



Pouvez-vous me donner des pistes svp? J'ai un embrillon de solution mais apparemment je n'obtiens pas la bonne solution.

D'avance, merci!

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
23 sept. 2018 à 18:41
Bonjour,

Sans connaitre la structure de tes tables.... ni un exemple de données présentes dans ta bdd cela va être compliqué.
De plus, ici on aide.. on ne fourni pas de code tout fait.
Commence donc par nous fournir un DUMP de ta bdd
Puis les tests que tu as effectué en expliquant exactement ce que tu obtiens... et ce que tu souhaiterais réellement avoir.

NB: On poste ses questions en Français sur le site (cela vaut également pour les schémas )

0
Maxdaless Messages postés 4 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 24 septembre 2018
23 sept. 2018 à 20:28
Desolé pour la maladresse, donc voici mon code le plus convaicant de mes essais:

SELECT
Portfolio.Name
From product
INNER JOIN ProductContent on product.Id=ProductContent.ProductId
INNER JOIN Portfolio on Portfolio.Id=ProductContent.PortfolioId

Where product.name in('FRUCTI SELECTION CAPI','FRUCTI SELECTION VIE')
GROUP BY Portfolio.Name
HAVING COUNT(*)>1
Order by Portfolio.name



En gros je lie les tables qu'il faut (Product -> Portfolio). Je pars du principe (qui est vrai) qu'un Portfolio.name ne peut se retrouver qu'une fois dans un certain Product. Donc je recherche tous les Portfolio.names qui se retrouve dans les deux produits à investiguer ('FRUCTI SELECTION CAPI','FRUCTI SELECTION VIE') et je recherche les duplicates.

Cependant, j'obtiens trop de resultats (trop de portfolio.name). Ce que je demande c'est :
- Est-ce que ma démarche est éronnée?
- Y a t'il un autre moyen pour isoler ce type de valeur? (ce qui en soit est assez simple sur excel par exemple, mais mon prof le veut en SQL)

D'avance, merci
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
23 sept. 2018 à 20:54
Jette un oeil aux instructions DISTINCT
GROUP BY
Et éventuellement... au
HAVING COUNT(names) > 1  
0
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
Modifié le 23 sept. 2018 à 21:57
Ton schéma contient deux tables, appelées Table1 et Table2.
Ta requête contient trois tables, appelées product, ProductContent et Portfolio.
Prends le temps de nous expliquer la structure de tes tables.
Tu es novice en SQL, et cela t’empêche de répondre à l'exercice proposé par ton prof.
Ta démarche me semble en effet complètement erronée.
Le prof a-t'il déjà expliqué comment faire une jointure incluant plusieurs fois les mêmes tables? Sinon, attends qu'il explique cela pour résoudre l'exercice.
0
Maxdaless Messages postés 4 Date d'inscription jeudi 18 octobre 2012 Statut Membre Dernière intervention 24 septembre 2018
24 sept. 2018 à 10:27
C'est bon merci, je cherchais juste les commandes UNION, INTERSECT, EXCEPT.
Merci à tous.
0