IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Afficher champs où il y a doublon sur 1 champ


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2021
    Messages : 3
    Par défaut Afficher champs où il y a doublon sur 1 champ
    Bonjour à tous,

    je suis très débutant en SQL ( 4h de TP à la fac). Et là j'ai une base de données de télévision Je dois afficher les co-réalisateurs d'une même émission. Je met ci-joint le MCD :

    Nom : Capture d’écran 2022-04-16 à 18.27.56.png
Affichages : 87
Taille : 112,7 Ko



    Fonction = réalisateur,acteur,cameraman, etc...

    Pour l'instant j'ai réussi à afficher les films avec plusieurs réalisateurs :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT count(Emission.Titre),Intervenir.NomF, emission.titre
    FROM Intervenir,Emission,Personne
    WHERE Emission.reference = Intervenir.reference
    AND Intervenir.NumP=personne.nump
    AND NomF= 'réalisateur'
    GROUP BY Intervenir.reference,Emission.Titre,Intervenir.NomF,emission.titre
    having count(Emission.Titre)>1;

    celà m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    COUNT(EMISSION.TITRE) NOMF        TITRE                                             
    --------------------- ----------- --------------------------------------------------
                        2 réalisateur 2 Broke Girls                                     
                        2 réalisateur Le prénom                                         
                        2 réalisateur Couple... quitte ou double ?
    Donc j'ai bien réussi à récuperer les seuls films ou il y a deux réalisateurs, sauf que je ne sais pas comment afficher ces deux réalisateurs.... quand j'ajoute au SELECT le prénom et le nom et que je l'ajoute egalement au GROUP BY après il n'y en a plus deux car les lignes ne sont pas egales... ( donc le having count ne marche plus) et j'ai essayé de mettre dans le SELECT le nom et prénom et ne pas le mettre dans Group by mais ça ne marche logiquement pas... Quelqu'un pourrait m'aider s'il vous plait ?

    Merci beaucoup

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut Correction
    Tu ne nous montres pas la requête qui ne donne pas le résultat souhaité

    Conseils :
    -- Il faut faire les jointures avec JOIN et jamais avec , (syntaxe obsolète depuis des décennies)
    -- Tu peux utiliser des alias avec AS pour alléger tes requêtes
    -- N'oublie pas de grouper sur tous les ID en jeu (ID émission et ID personne), cela te permettra de gérer correctement les homonymies

    Il y a plusieurs manières de faire.

    Tu peux procéder en 2 temps avec une sous-requête :
    1. Récupérer les ID des émissions ayant plusieurs réals
    2. Afficher les réalisateurs des émissions des ID récupérés précédemment

    Cela donnerait :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT ALL e.Reference, e.Titre, i.NomF, p.NumP, p.Nom, p.Prenom
    FROM Emission AS e
    INNER JOIN Intervenir AS i ON e.Reference = i.Reference
    INNER JOIN Personne AS p ON i.NumP = p.NumP
    WHERE  i.NomF = 'Réalisateur' AND e.Reference IN (
    	-- Récupère les émissions ayant 2 réals ou plus
    	SELECT ALL e.Reference
    	FROM Emission AS e
    	INNER JOIN Intervenir AS i ON e.Reference = i.Reference
    	WHERE i.NomF = 'Réalisateur'
    	GROUP BY e.Reference
    	HAVING COUNT(*) >= 2
    )

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2021
    Messages : 3
    Par défaut
    Merci beaucoup pour la réponse et pour l'aide !! mais ça me fait l'erreur " ORA-00933: la commande SQL ne se termine pas correctement" que je n'arrive pas à résoudre pourquoi le e est souligné ? qu'est ce qui pose problème ?

    Nom : Capture d’écran 2022-04-17 à 09.46.25.png
Affichages : 66
Taille : 158,4 Ko

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut
    J'ai apporté une correction à ma requête, qui était erronée

    Concernant l'erreur de syntaxe, je ne connais pas Oracle, mais apparemment il ne supporterait pas le SQL standard et le AS

    Essaie de faire sans les AS et de préfixer tes colonnes avec les noms de tables complets, comme tu faisais initialement.

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2021
    Messages : 3
    Par défaut
    Du coup j'ai fait :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT ALL emission.Reference, emission.Titre, intervenir.NomF, personne.NumP, personne.Nom, personne.Prenom
    FROM Emission
    INNER JOIN Intervenir ON emission.Reference = intervenir.Reference
    INNER JOIN Personne ON intervenir.NumP = personne.NumP
    WHERE  intervenir.NomF = 'Réalisateur' AND emission.Reference IN (
    	-- Récupère les émissions ayant 2 réals ou plus
    	SELECT ALL emission.Reference
    	FROM Emission
    	INNER JOIN Intervenir ON emission.Reference = intervenir.Reference
    	WHERE intervenir.NomF = 'Réalisateur'
    	GROUP BY emission.Reference
    	HAVING COUNT(*) >= 2
    )

    Mais ça me sélectionne aucune ligne ça me parait pourtant juste, j'ai essayé de mettre le having count à >= 0 mais ça ne prend aucune ligne non plus

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 354
    Billets dans le blog
    17
    Par défaut
    Donne un jeu de données de test, qu'on puisse voir où ça bloque.

    Tu peux aussi mettre en ligne l'exemple ici => http://sqlfiddle.com/

Discussions similaires

  1. Eviter les doublons sur un champ SQL Serveur 2005
    Par crashyear dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 09h02
  2. [Access] supprimer les doublons sur deux champs
    Par nini94 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 13/10/2006, 12h41
  3. Reperage de doublon sur plusieur champs
    Par sdblepas dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 19h19
  4. [SQL/access] Doublon sur un champ
    Par kor dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/01/2005, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo