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 :

pb de requete avec valeurs null


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut pb de requete avec valeurs null
    Bonjour,
    je dispose de 3 tables :

    Salle(id_salle, numero, etage)
    OS(id_os, nom, description)
    Poste (id_poste, ip, name, id_OS, id_salle)

    La table Poste possède 2 clés étrangères vers les tables Salle et OS. Ces clés étrangères peuvent être NULL.
    Avec la requete suivante, j'affiche les détails sur les postes avec le numéro de salle et le nom de l'OS:

    SELECT p.*, s.numero, os.nom FROM Salle s, OS os, Poste p WHERE p.id_OS = os.id_OS AND p.id_salle = s.id_salle


    Cependant, lorsqu'un enregistrement dans la table Poste possède une valeur NULL pour l'une (ou les 2) de ses clés étrangères, l'enregistrement n'est pas du tout renvoyé! Ca fait un moment que je suis sur cette requête je commence à devenir fou, alors si vous pouviez me filer un ptit coup de main! Je pense qu'il faut utiliser la fonction isnull(a,b) de mysql, une idée?
    Egalement, je voudrai savoir s'il était possible, dans le cas d'une valeur NULL pour une clé étrangère de la table Poste, de remplacer la valeur renvoyé (s.numero et/ou os.nom) par une chaine de caractère?

    Merci à tous!!

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Essaies-ça (Attention c'est 1 infâme bidouille de début de journée, j'ai pas testé, je ne garanti rien )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT p.*, COALESCE(s.numero, 'ton texte'),
    COALESCE (os.nom, 'ton texte')
    FROM Salle s, OS os, Poste p 
    WHERE (p.id_OS = os.id_OS AND (p.id_salle = s.id_salle OR p.id.salle IS NULL))
    OR (p.id_OS = os.id_OS OR  p.id_OS IS NULL) AND (p.id_salle = s.id_salle))

  3. #3
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Ce qui correspond grosso modo à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT p.*, IFNULL(s.numero, 'texte'), IFNULL(os.nom, texte')
    FROM Poste p LEFT JOIN salle s 
      ON p.id_salle = s.id_salle
    LEFT JOIN OS
      ON p.id_OS = os.id_OS
    Pensez au bouton

  4. #4
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ce qui correspond grosso modo
    En fait c'est même beaucoup plus vicieux. Avec 1 jointure externe on obtient le bon résultat. Pas avec les jointures dans le WHERE. Si l'1 ou l'autre ou les 2 FK sont null, on fait sauter la restriction et se retouve avec 1 produit cartésien, et donc 1 tas le lignes dupliquées avec des infos. potentiellement fausses.
    Moralité :
    Pourquoi faire simple qd on peut faire compliqué ??

Discussions similaires

  1. requete avec valeurs nulles
    Par zozoman dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/06/2013, 17h54
  2. Somme de requete avec valeur NULL
    Par maxeur dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/04/2007, 10h19
  3. [SQL] Requête avec "valeur si null"
    Par metalcoyote dans le forum Oracle
    Réponses: 3
    Dernier message: 19/04/2006, 10h22
  4. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40
  5. Pb requete avec valeurs nulles
    Par James85 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/04/2004, 10h20

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