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

  1. #1
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut Aide pour une requête SQL
    Bonjour à tous,

    je viens recueillir vos conseils concernant une requête sql sur deux tables:

    voici mes tables:

    table tbl_compte:

    id_tbl_compte
    nom_tbl_compte
    prenom_tbl_compte
    actif_ou_inactif_tbl_compte (prend la 1 pour actif et 2 pour inactif)

    table tbl_message:

    id_tbl_message
    posteur_tbl_message (correspond à id_tbl_compte)
    titre_tbl_message
    corp_tbl_message

    Le but du jeu serait de selectionner tous les messages ou le posteur a un compte actif.

    Si possible merci de proposer une requête concrète car je viens du cours SQL de A à Z de developpez partie jointure mais ça ne m'a pas apporté de réussite.

    Merci à tous pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    selectionner tous les messages ou le posteur a un compte actif
    Il faut donc joindre les deux tables.
    Qu'est-ce qui permet de relier les lignes des deux tables ?
    Tu le dis toi-même :
    posteur_tbl_message (correspond à id_tbl_compte)
    => 'posteur_tbl_message = id_tbl_compte' sera donc la condition de jointure entre les deux tables.

    Syntaxe générale d'une jointure entre deux tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM une_table
    JOIN une_autre_table ON condition_de_jointure
    Ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT m.id_tbl_message, m.titre_tbl_message
      c.id_tbl_compte, c_nom_tbl_compte, c.prenom_tbl_compte
    FROM tbl_message AS m
    INNER JOIN tbl_compte AS c ON c.id_tbl_compte = m.posteur_tbl_message
    WHERE actif_ou_inactif_tbl_compte = 1
    J'ai utiliser des alias, introduits par AS, pour faciliter l'écriture et la lecture de la requête.

  3. #3
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    Merci pour ta réponse,

    Et surtout pour les commentaires que tu lui as inséré. Je vais faire une relecture du cours de SQLpro, c'est impératif pour moi de métriser les jointures.

    Dommage qu'il n'y ai pas TP avec ces docs.

    Encore merci.

  4. #4
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    Suite à la réponse de cinephil et une relecture du cours de SQLpro sur les jointures je me suis lancé dans quelques choses de plus complexe que l'exemple précédent.

    voici ma requête dans un contexte de petites annonces ou il faudrait extraire uniquement les annonces de professionnels:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $rqt_ann = mysql_query("SELECT 
    				prod.id_tbl_produit, 
    				prod.titre_tbl_produit, 
    				prod.descriptif_tbl_produit, 
    				prod.img1_tbl_produit, 
    				prod.img2_tbl_produit,
    				prod.img3_tbl_produit, 
    				prod.img4_tbl_produit, 
    				prod.img5_tbl_produit, 
    				prod.express_tbl_produit, 
    				prod.prix_tbl_produit, 
    				prod.port_tbl_produit, 
    				prod.date_tbl_produit, 
    				prod.departement_tbl_produit, 
    				prod.type_tbl_produit,
    				cpt.pro_ou_part_tbl_compte
    				FROM tbl_produit AS prod 
                                    INNER JOIN tbl_compte AS cpt 
    			        ON prod.annonceur_tbl_produit = cpt.id_tbl_compte  
    				WHERE cpt.pro_ou_part_tbl_compte = 1 
                                    AND prod.categorie_tbl_produit = '$cat' 
                                    AND prod.img1_tbl_produit 
    				IS NOT NULL ORDER BY RAND() LIMIT 10")or die(mysql_error());
    Je n'ai pas d'erreur SQL mais je n'ai pas de ligne de résultat de la requête, alors que je devrait avoir au moins trois lignes de résultats.

    Merci à tous pour vos réponses.

    Edit: juste une petite erreur sur mon fichier local dsl tout roule.

  5. #5
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    On peut avoir la structure des deux tables (le résultat de SHOW CREATE TABLE la_table) ?

    As-tu essayé la requête directement dans phpMyAdmin ( ou autre client graphique) ou directement dans MySQL en ligne de commande ?

    Au passage, tu ne devrais pas avoir 5 colonnes images mais une table image associée à la table produit. Avec ta structure, si tu as moins de 5 images, tu as des colonnes vides donc perte de place et si un jour tu as plus de 5 images, tu seras obligé de revoir ta structure.

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, 21h16
  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, 17h03
  3. aide pour une requête sql/plpgsql
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/11/2007, 12h32
  4. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 11h33
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 12h56

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