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 :

Jointure et tuple qui existe ou non (selon l'utilisateur).


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Points : 41
    Points
    41
    Par défaut Jointure et tuple qui existe ou non (selon l'utilisateur).
    Bonjour à tous,

    Je n'arrive pas à trouver la solution à ce problème, ainsi je viens à vous.

    J'essaie d'effectuer la jointure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT a.champ
         , b.champ 
    FROM Personnage a JOIN photos_personnage b 
                      ON a.user_id=b.user_id 
    WHERE a.user_id = $Utilisateur[user_id] LIMIT 1
    Cette requête fonctionne si et seulement si l'utilisateur à bien entré sa photo dans la table photos_personnage.

    Attention, c'est une table de photo, donc si y'a pas d'utilisateur qui à ajouter sa photo, y'a pas de champ id, etc.. à son nom dans photos_personnage.

    Avez-vous une solution, j'ai regardé dans isnull etc.. mais à priori sa marcherait si y'aura un champ à son nom mais vide (mais dans ce cas la, c'est pas vide mais n'existe pas).

    Merci de votre aide :-)

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 220
    Points : 28 201
    Points
    28 201
    Par défaut
    La jointure Join est en réalité une jointure INNER JOIN, c'est à dire qu'elle ne te renverra que les enregistrement qui sont non null des 2 coté de la jointure.

    Or toi tu veux tous les enregistrements de la première table et ce même si dans la seconde table il n'y a pas d'enregistrement correspondant. Ceci correspond à une jointure "gauche"

    SELECT a.champ,b.champ FROM Personnage a LEFT OUTER JOIN photos_personnage b ON a.user_id=b.user_id WHERE a.user_id = $Utilisateur[user_id] LIMIT 1

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Merci bien, je vais testé sa.

    Edit : pour ceux qui ont la même question, ça marche nickel :-) merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/10/2011, 16h53
  2. Des fichiers inexistants qui existent pourtant !
    Par iubito dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 07/09/2004, 10h29
  3. connaitre les bases qui existes
    Par nycagi dans le forum Administration
    Réponses: 13
    Dernier message: 08/06/2004, 12h29
  4. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50
  5. Une table qui existe mais qui est inconnu! ?
    Par Nino dans le forum InterBase
    Réponses: 6
    Dernier message: 13/06/2003, 11h47

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