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 :

Recherche sans boucle


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Recherche sans boucle
    Bonjour à tous

    Voici mon besoin, j'ai une requete permettant de récupérer les annonces d'un membre de mon site

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT 
    SQL_CALC_FOUND_ROWS DISTINCT (annonce.id_annonce),
    titre_francais,
    annonce.id_membre,
    .....,
     annonce_avant,
    CASE WHEN date_annonce > '2017-01-06' THEN 1 ELSE 0 END AS news 
    FROM annonce JOIN annonce_expedition ON annonce_expedition.id_annonce = annonce.id_annonce 
    JOIN membre ON membre.id_membre = annonce.id_membre
    JOIN annonce_titre ON annonce.id_titre = annonce_titre.id_titre 
    JOIN annonce_libelle ON annonce.id_libelle = annonce_libelle.id_libelle
    LEFT JOIN annonce_option ON annonce.id_annonce = annonce_option.id_annonce 
    WHERE annonce.id_membre ='1' 
    ORDER BY annonce_cloture LIMIT 0,10
    Après traitement dans une boucle ou j'afficher chaque résultat, je refait une demande SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id_annonce_question,
    id_annonce_reponse 
    FROM annonce_question 
    LEFT JOIN annonce_reponse ON annonce_question.id_annonce_question = annonce_reponse.id_annonce_question
    WHERE id_annonce = 1
    Le résultat est une liste de question sur un objet au quelle la personne à répondu ou non

    Je fait une nouvelle boucle pour vérifier si id_annonce_reponse est NULL pour afficher ou non un bouton pour passer à la page de listing des questions non répondu

    Donc voila l'état actuel

    -------------------------------------------------

    Je souhaite donc savoir si il est possible de faire cette deuxième demande sans avoir a passer par une boucle car sa me bouffe de la ressource pour rien

    Sachant que le seul lien entre la table annonce_question et la précédente doit passer par annonce.id_annonce

    J'ai fait plein de tes mais je n'arrive pas à grouper pour obtenir une simple colonne dans ma requête de départ affichant 1 ou 0 si une réponse en attente

    J'espère avoir été clair.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Pourquoi ne faites vous pas une seule requête, en ajoutant la jointure sur la table des réponses dans votre 1ère requete ?
    Puisque votre 2ème requête filtre sur un code annonce, c'est tout à fait possible

    De plus, simplifiez vous la vie, plutôt que de citer les noms de table in extenso, utilisez des alias

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Points : 4
    Points
    4
    Par défaut LEFT JOIN + nouvelle condition
    Bonjour

    Oui sa marche comme je suis auto didact il y a quelque fois ont est borné dans sa logique....

    Effectivement avec l'ajout d'un left join avec des conditions sa marche

    Pour les alias je les utilises mais je passe plus de temps à me souvenir qui est A B et C et comme j'ai une mémoire à cour terme de poisson rouge sa aide pas....

    Par contre j'oubli jamais un code que j'ai développer... paradoxal non

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par mistel2 Voir le message
    Pour les alias je les utilises mais je passe plus de temps à me souvenir qui est A B et C et comme j'ai une mémoire à cour terme de poisson rouge sa aide pas....
    Donnez des noms mnémoniques ou des initiales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FROM annonce AS A
         JOIN annonce_expedition AS AE
            ON AE.id_annonce = A.id_annonce 
         JOIN membre AS M 
            ON M.id_membre = A.id_membre
         JOIN annonce_titre AS AT 
            ON A.id_titre = AT.id_titre 
         JOIN annonce_libelle AS AL 
            ON A.id_libelle = AL.id_libelle
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. [Toutes versions] recherche dans un tableau sans boucle
    Par edelweisseric dans le forum Excel
    Réponses: 0
    Dernier message: 08/02/2014, 08h41
  2. [Dojo] Recherche d'un attribut dans iframe sans boucle for
    Par Lionkid dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 21/10/2010, 14h58
  3. [VBA-E] Modifier le contenu d'un range sans boucle
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/04/2006, 11h19
  4. créer des liens automatiquement mais sans boucle
    Par psychoBob dans le forum Langage
    Réponses: 8
    Dernier message: 15/12/2005, 15h20
  5. faire une recherche sans tenir compte de la casse
    Par richard038 dans le forum SQL
    Réponses: 5
    Dernier message: 11/10/2005, 09h07

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