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

Langage SQL Discussion :

Aide pour une requête SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut Aide pour une requête SQL
    Bonjour,
    Il me faudrait une petite aide pour une requête SQL, avec 2 tables : ANNONCE et PHOTO. Je n'arrive pas à obtenir ce que je veux, c'est-à-dire : la liste des annonces visibles ainsi que le nombre de photos visibles pour chacune d'entre elles (et le nom du fichier de la première photo).
    Mon problème : pour une annonce donnée avec 1 seule photo, si je rends cette photo invisible, il ne me ramène pas l'annonce dans ma requête.

    1ere table : ANNONCE, 3 champs :
    numA : id de l'annonce
    titreA : titre de l'annonce
    actifA : champ binaire (1=annonce visible / 0=annonce non visible)

    2ème table : PHOTO, 5 champs :
    numP : id de la photo
    titreP : titre de la photo
    fichierP : nom du fichier
    numA : id de l'annonce à laquelle est reliée la photo
    actifP : champ binaire (1=photo visible / 0=photo non visible)

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ANNONCE.numA, ANNONCE.titreA, Count(PHOTO.numP) AS Nbphoto, First(PHOTO.fichierP) AS FichierP
    FROM ANNONCE LEFT JOIN PHOTO ON ANNONCE.numA = PHOTO.numA
    GROUP BY ANNONCE.numA, ANNONCE.titreA
    HAVING ((PHOTO.actifP)=1) AND ((ANNONCE.actifA)=1);

    Je vous remercie par avance pour votre aide

    A+

    Johann

  2. #2
    Membre émérite Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 507
    Par défaut
    Bonjour,

    Essayez ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT annonce.numA, titreA, nbPhoto
    FROM anonce
      JOIN (
        SELECT Count(*) AS nbPhoto, numA
        FROM photo
        WHERE actifP = 1
        GROUP BY numA
      ) AS td
        ON annonce.numA = photo.numA
    WHERE actifA = 1

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut
    Ok,

    je vois comment procéder. Par contre, je pense qu'il faut que je mette une LEFT JOIN, dans le cas où j'ai une annonce mais aucune photo liée à celle-ci.

    Merci pour la réponse

    A+

    Johann

Discussions similaires

  1. Besoin d'aide pour une requête SQL
    Par FranckyVegas dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/05/2008, 20h16
  2. Besion d'aide pour une requête SQL SVP
    Par manucha dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/12/2007, 16h03
  3. aide pour une requête sql/plpgsql
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/11/2007, 11h32
  4. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 10h33
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56

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