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

PostgreSQL Discussion :

aide pour formuler une requete sql


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut aide pour formuler une requete sql
    Bonjour,

    Je sollicite votre aide pour une requête sql.

    J'ai une table photo avec les champs suivants :

    id_photo, id_membre,rang_photo

    Un membre peut avoir 3 photos qu'il peut placer en 1ère, 2ème ou 3 eme position sur sa page.

    Pour contrôler l'absence de bug dans le script php je souhaiterai vérifier qu'aucun membre ait plus d'une photo avec le même rang.

    Par exemple :

    id_photo = 1 id_membre = 2 rang_photo = 1
    id_photo = 2 id_membre =2 rang_photo = 1

    est interdit car deux photos d'un même membre ont le même rang.

    mais comment faire cette requête sql ?

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Par défaut
    Salut,
    cette requête te donne les membres pour lesquels il existe un rang ou ils ont plus d'une photo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select  id_membre,rang_photo,count(*) 
    from rang 
    group by id_membre,rang_photo 
    having count(*)>1;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut
    merci mais c'est pas ce que je veux...

    je veux connaitre les membres qui ont plusieurs photos au même rang...

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    La requête proposée par djlixfe fait ce que tu demandes : elle renvoit id du membre, le rang et le nombre de photo sur ce rang, quand il y a plus d'une photo sur le rang.
    Ca a tout l'air d'être ce que tu veux...
    A moins que tu veuilles l'id des photos en plus ?

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut
    Ben dans la réalité elle ne me donne pas le résultat escompté...

    Je veux savoir combien de membres ont "deux photos au moins" sur le rang "1"

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Par défaut
    Citation Envoyé par viny Voir le message
    Bonjour,

    est interdit car deux photos d'un même membre ont le même rang.

    mais comment faire cette requête sql ?

    Merci de votre aide.
    As-tu pensé à une contrainte unique sur (id_membre,rang_photo) ? Radical mais efficace!

    Citation Envoyé par viny Voir le message
    Je veux savoir combien de membres ont "deux photos au moins" sur le rang "1"
    Dans ces conditions, tu peux simplement compter les lignes retournées par la requête dedjlixfe en l'utilisant comme sous requête. Mais tu ne sauras pas quels sont les utilisateurs fautifs.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut
    Non je n'y avais pas pensé ... effectivement une contrainte sur ces deux champs et l'affaire est classée... !

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut
    j'ai un pb de syntaxe pour ajouter ma contrainte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ALTER TABLE "public"."media_inscrit"
      ADD CONSTRAINT "media_inscrit_chk" CHECK (UNIQUE media_inscrit_rang, media_inscrit_inscrit_id
    );
    Cela m'est refusé...

    merci

  9. #9
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Par défaut
    Le contrôle d'unicité n'est pas une contrainte de type 'CHECK' mais de de type 'UNIQUE'... Et on ne mélange pas les 2 non plus.

    2 possibilités pour effectuer ta vérification qui sous postgresql reviennent au même (postgresql créant un index unique implicite derrière chaque containte unique):
    * définir une contrainte UNIQUE sur la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE "public"."media_inscrit"
            ADD CONSTRAINT "media_inscrit_chk" 
            UNIQUE ("media_inscrit_rang", "media_inscrit_inscrit_id");
    * définir un index unique sur les champs concernés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE UNIQUE INDEX "media_inscrit_chk_ui" 
            ON "public"."media_inscrit" ("media_inscrit_rang", "media_inscrit_inscrit_id");

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut
    Je n'ai pas pu le faire car il me dit qu'il y a des valeurs dupliquées...et c'est normal car l'index ne va pas contrôler l'unicité du couple de colonnes mais l'unicité de chaque colonne. Or, c'est pas le cas dans ma table.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide pour formuler une requete
    Par aymen007 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/04/2009, 18h38
  2. Aide pour formuler une requête sql
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/05/2008, 20h37
  3. demande d'aide pour comprendre une requete SQL
    Par Halloula dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/04/2008, 18h14
  4. aide pour créer une requete sql
    Par DonKnacki dans le forum Langage SQL
    Réponses: 11
    Dernier message: 07/02/2008, 18h17
  5. Aide pour optimiser une requete
    Par Akanath dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/09/2005, 11h05

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