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

PHP & Base de données Discussion :

[SQL] Forcer l'affichage d'une table SQL malgrès des collones (jointure) vide


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut [SQL] Forcer l'affichage d'une table SQL malgrès des collones (jointure) vide
    Bonjour,

    J'ai une table Mysql avec plusieurs collones. Certaines collones pointes vers d'autres tables.

    Exemple : Table "PC"

    id_pc | hostname | marque | modele ...
    ..1.......AKF1245.......3...........2.........

    marque > marque.id_marque
    modele > modele.id_modele

    Lorsque la table est complètement rempli, aucun problème pour la visualiser, par contre si la collone "marque" et/ou "modele" n'est pas renseigné, impossible de visualiser la table "PC".

    Le problème vient des jointures "marque et "modele", mais comment forcer l'affichage des données malgrès l'absence de données de les colonne "marque" et "modele" ?

  2. #2
    Membre émérite Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Par défaut
    Salut,
    Il s'agit d'une question concernant les bases de données pures.
    Cependant :
    il faut que tu utilises les jointures à droite ou à gauche selon ta requête.
    Une petite recherche sur ce forum (avec les mots clés "left join", dans la section Base de données bien sûr ! devrait te donner des réponses).
    a+

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Par défaut
    Je ne connais pas ta requete SQL, mais il semble que tu as un problème de jointure externe.
    si tu as deux tables maTableGauche et maTableDroite avec des donnèes qui n'existent pas dans la table maTableDroite (cad qui ne satisfont pas les conditions de jointures)
    Recherche ce type de jointure
    SELECT a,b
    FROM maTableGauche LEFT JOIN maTableDroite ON Condition de jointure

    Si a existe dans maTableGauche mais n'a pas de correspondance dans maTableDroite, dans une jointure classique, la ligne n'apparait pas mais avec LEFT JOIN la ligne apparait avec le champs de la maTableGauche et la valeur NULL pour le champ de maTableDroite
    si j'ai pu t'aider

    Le temps que j'écrive nakko t'a répondu!!!

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    Ma requête SQL est du genre :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM pc, marque, modele
    WHERE marque=id_marque
    AND modele=id_modele

    etc...

    Je vais relire vos réponses, car j'ai pas bien tout compris...

    Merci pour vos réponses !

    Arnaud

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Par défaut
    Tentes du genre
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM pc
    LEFT JOIN marque, modele
    ON pc.marque=marque.id_marque
    AND pc.modele=modele.id_modele


    et si tu appelles des attributs du même nom dans les tables pc, marque et modele tu peux faire tout simplement
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM pc
    NATURAL LEFT JOIN marque, modele


  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    Ah ok, je ne connaissais pas ce genre de requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM pc
    NATURAL LEFT JOIN marque, modele

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    pour info voici ma vrai requête... j'avais essayé d'adapter ce que tu m'as expliquer à cette requête...

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT *
    			 FROM inventaire_pc, marque, modele, os, situation, utilisateur, batiment, etage
    			 WHERE inventaire_pc.pc_modele = id_modele
    			 AND modele_id_marque = id_marque
    			 AND inventaire_pc.os = id_os
    			 AND inventaire_pc.situation = id_situation
    			 AND inventaire_pc.batiment = id_batiment
    			 AND inventaire_pc.etage = id_etage
    			 AND inventaire_pc.utilisateur = id_utilisateur

    Merci beaucoup pour ta réactiviter !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/12/2009, 09h25
  2. Réponses: 5
    Dernier message: 09/07/2008, 17h04
  3. Réponses: 5
    Dernier message: 02/05/2008, 14h46
  4. [SQL] Supprimer les lignes d'une table sql
    Par radhwene dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/06/2007, 11h48
  5. [DEB.] - Transposer une table SQL en XML SCHEMA ???
    Par oulahoup dans le forum Valider
    Réponses: 2
    Dernier message: 10/06/2003, 15h11

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