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

Requêtes MySQL Discussion :

Probleme avec une requête sur 2 tables


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Probleme avec une requête sur 2 tables
    Bonjour,

    J'ai un petit problème avec une requête SQL.

    Voila le diagramme de ma base (je vous fait grâce du reste )
    http://img210.imageshack.us/my.php?i...agrammeba3.png

    Et ce que je voudrai c'est récupérer le titre, la date, le message, et l'auteur en triant par genre ( ex : WHERE `genre` = 'accueil' )

    Le problème c'est que l'auteur est soit, si il n'a pas de compte, stocker dans le champ "auteur" de la table "article" (là pas de problème), soit si il a un compte, l'id du compte est stocker dans le champ "id_auteur".
    Donc si l'auteur a un compte, le champ "id_auteur" a pour valeur par exemple "1", je voudrai une requête qui me renverai le titre, la date, le message, ET le nom et le prénom de l'utilisateur ayant pour "compte_utilisateur.id" 1.

    J'avais pensé a une jointure mais le problème est que je ne vois pas trop comment faire car le problème ne se pose pas dans le "where" :S, ou a une sous-requête.

    Et pour savoir si c'est le champ "auteur" ou "id_auteur" qui est rempli, et donc le traitement a faire, puis-je passer par une structures de contrôle en php ou c'est possible de faire le traitement avec la requête SQL?

    Merci.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut
    De ce que j'ai compris de tes explications, il suffit de faire un "SELECT CASE..."
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Il faut faire une jointure externe sur la table 'compte_utilisateur' afin d'avoir tous les articles, même ceux dont l'auteur n'a pas de compte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.titre, a.date, a.message, a.auteur, c.nom, c.prenom
    FROM article a
    LEFT OUTER JOIN compte_utilisateur c ON a.id_auteur_cle_etrangere = c.id
    WHERE a.genre = 'accueil'
    Il y aura NULL dans les colonnes nom et prenom lorsque l'auteur n'aura pas de compte.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci je vais tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.titre, a.date, a.message, a.auteur, c.nom, c.prenom
    FROM article a
    LEFT OUTER JOIN compte_utilisateur c ON a.id_auteur_cle_etrangere = c.id
    WHERE a.genre = 'accueil'
    C'est exactement ce à quoi je n'aurai pas pensé XD

    [Edit]
    Ça marche du feu de dieu!
    Merci
    Je vais étudier plus en détail ta méthode pour pouvoir la réutiliser!
    Merci encore!!!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/09/2013, 14h30
  2. Soucis avec une requête sur une table de 93 000 entrées
    Par lelectronique.com dans le forum Requêtes
    Réponses: 21
    Dernier message: 17/11/2012, 19h27
  3. Réponses: 4
    Dernier message: 05/03/2008, 09h32
  4. [Oracle 10g]probleme avec une CONSTRAINT sur UPDATE
    Par Battosaiii dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/04/2006, 19h05
  5. [C#] Probleme avec une requête à condition
    Par discogarden dans le forum Windows Forms
    Réponses: 12
    Dernier message: 22/03/2006, 16h16

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