|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
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" ? |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : août 2003 Messages : 581 ![]() |
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+ |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Inscription : juillet 2003 Messages : 338 ![]() |
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!!! |
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
Ma requête SQL est du genre :
Code SQL :
etc... Je vais relire vos réponses, car j'ai pas bien tout compris... Merci pour vos réponses ! Arnaud |
||
|
|
00
|
|
|
#5 | ||||
|
Membre éclairé
![]() Inscription : juillet 2003 Messages : 338 ![]() |
Tentes du genre
Code SQL :
et si tu appelles des attributs du même nom dans les tables pc, marque et modele tu peux faire tout simplement Code SQL :
|
||||
|
|
00
|
|
|
#6 | ||
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
Ah ok, je ne connaissais pas ce genre de requête :
Code SQL :
|
||
|
|
00
|
|
|
#7 | ||
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
pour info voici ma vrai requête... j'avais essayé d'adapter ce que tu m'as expliquer à cette requête...
Code SQL :
Merci beaucoup pour ta réactiviter ! |
||
|
|
00
|
|
|
#8 | ||||
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
J'ai essayer de faire ce genre de requete
Code SQL :
sur ma requête. Code SQL :
La base me renvoie plein d'enregistrement et ce met à ramé.. j'ai du mal écrire ma requête... |
||||
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() Inscription : juillet 2003 Messages : 338 ![]() |
C'est un peu normal, tu vas avoir tous les champs (*) et toutes lignes de ta table inventaire_pc (c'est le rôle de maTableGauche et c'est le but du LEFT) car on a forcé même s'il n'y a pas de marques et modèles etc. dans les tables du genre maTableDroite.
En revanche, ces champs de maTableDroite sont renvoyés avec la valeur NULL qui peuvent être testés . |
|
|
00
|
|
|
#10 |
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
Bah en faite oui ca devrai faire ce que tu m'expliques mais la, j'ai que deux enregistrements, et la requête me sort mes deux enregistrements plusieurs fois de suite (3741696 de fois !!!
Je ne comprend pas trop... |
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() Inscription : juillet 2003 Messages : 338 ![]() |
Tu as plusieurs fois le même modèle ou autres champs de la table inventaire_pc? essaye en ajoutant la clause distinct apres le select
Code SQL :
SELECT DISTINCT * FROM maTableGauche |
|
|
00
|
|
|
#12 |
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
Non, ca donne rien, ca rame encore plus car il m'affiche pleins d'enregistrements alors que j'ai que deux enregistrements ds la table.
En fichier joint, je te montre le schéma de ma base |
|
|
00
|
|
|
#13 | ||
|
Membre éclairé
![]() Inscription : juillet 2003 Messages : 338 ![]() |
Je vois dans ton schéma un peu de redondance d'information, mais cela pour sans doute faire des requêtes plus courtes, et des contraintes fortes...Si par exemple un utilisateur travaille sur deux étages il faudra qu'il existe deux fois dans la base, si un pc est utilisé par plus d'une personne il faudra autant de inventaire_pc...Je m'occupe de ce qui ne regarde pas
Dans inventaire pc tu n'as que deux lignes??? essaye Code SQL :
|
||
|
|
00
|
|
|
#14 |
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
Tu vas devenir fou, j'en ai 6 x 2 lignes répéter... !!!
Je ne comprend rien à ce truc !! |
|
|
00
|
|
|
#15 | ||
|
Membre éclairé
![]() Inscription : juillet 2003 Messages : 338 ![]() |
Kawabunga Code SQL :
|
||
|
|
00
|
|
|
#16 |
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
Tu sais quoi ?
Tu es un dieu ! lol Nikel ca fonctionne ! merci ! Ralla sacré requête de ... ! lol |
|
|
00
|
|
|
#17 | ||
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
ok voici ma requete presque complete :
Code :
(modele.modele_id_marque = marque.id_marque) Comment je peux faire pour l'intégrer à ma requête exsitante ? |
||
|
|
00
|
|
|
#18 |
|
Expert Confirmé
![]() ![]() Inscription : juillet 2004 Messages : 2 684 ![]() |
Tu rajoutes un WHERE à la fin nan ?
Code :
WHERE modele.modele_id_marque = marque.id_marque
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace. Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h) |
|
|
00
|
|
|
#19 |
|
Membre actif
![]() Arnaud Inscription : décembre 2006 Messages : 871 ![]() |
Yes, it's good !
Merci bcp à vous ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com