Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2866 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Jointure sur plusieurs champ ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Jointure sur plusieurs champ ?

n°2053608
bko
Posté le 02-02-2011 à 10:13:47  profilanswer
 

Bonjour,
 
je bute sur une requête qui me semble pourtant assez simple.
 
J'ai une table PC dans laquelle je souhaite indiquer les logiciel qui sont installé dessus.
J'ai donc crée des champs logiciel_id1, logiciel_id2, logiciel_id3, logiciel_id4 (en admettant 4 logiciel au max).
 
J'ai une table logiciel dans laquelle je liste mes logiciels.
 
Ma requête fonctionnelle :
 

$sql = "SELECT pc, serialnb,..., desc_logiciel
 FROM tablepc
 INNER JOIN tablelogiciel
 ON id_logiciel = logiciel_id1

 
Ma question, comment récupérer les logiciels correspondant à logiciel_id2, logiciel_id3, logiciel_id4 ? car si j'indique or logiciel_id2 or logiciel_id3 or logiciel_id4, il me duplique mes résultats.
 
merci

mood
Publicité
Posté le 02-02-2011 à 10:13:47  profilanswer
 

n°2053622
Profil sup​primé
Posté le 02-02-2011 à 10:46:02  answer
 

Citation :

J'ai donc crée des champs logiciel_id1, logiciel_id2, logiciel_id3, logiciel_id4 (en admettant 4 logiciel au max).


 
Ca me choque un peu ça déjà  [:tinostar]  
 
Tu devrais avoir l'id du logiciel dans la table pc. Et si un pc à plusieurs logiciels tu aura plusieurs lignes avec le même pc mais un id du logiciel différent.
 
Tu peux faire voir ton MCD histoire que je jette un oeil ? :)
 
Après je vais laisser les pro d'SQL te répondre  [:cupra]
 
Edit: En regardant ta requête y a qqchose qui me gène aussi, il faut lier tes tables grâce aux FK que tu as du créer.
 
Edit: Et normalement une jointure se fait entre deux tables et non pas sur des champs.


Message édité par Profil supprimé le 02-02-2011 à 11:09:22
n°2053637
bko
Posté le 02-02-2011 à 11:10:58  profilanswer
 

En effet, dans ma table PC, j'ai 4 champs :
logiciel_id1, logiciel_id2,logiciel_id3 ,logiciel_id4 qui sont des FK qui contiennent chacune un id correspondant à un id de logiciel dans ma table logiciel.
 
Edit : mon code est certainement bancal, je ne suis pas pro du tout.


Message édité par bko le 02-02-2011 à 11:11:24
n°2053642
Profil sup​primé
Posté le 02-02-2011 à 11:26:28  answer
 

En fait je comprends pas pourquoi tu as autant de FK, une seule suffit.
 
Et si un pc à par exemple 3 logiciels, tu aura 3 ligne dans ta table avec le même nom de pc mais 3 id_logiciel différent.
 
Quelqu'un pourrait confirmer si je me trompe ou pas ?
 
PS: Tu peux faire voir ton mcd ? :)

n°2053647
bko
Posté le 02-02-2011 à 11:47:09  profilanswer
 

J'ai pas de MCD...  :sweat:  je travaille sous mysql, façon amateur...
 
Tu as saisi le truc en tout cas.
 
En fait je ne voudrais  pas avoir 3 lignes avec les mêmes infos ou juste le logiciel change à la fin.
Je voudrais une seule ligne de résultat avec a la fin mes 4 logiciels à la suite correspondant aux 4 champs qui sont crées dans la table pc.
 
Si j'essayais avec une seule FK dans la table PC que j'appellerais logiciel_id, comment est ce que je pourrais cumuler 4 logiciels différents avec 4 id différents dans un même champ ?

n°2053681
Profil sup​primé
Posté le 02-02-2011 à 14:08:00  answer
 

bko a écrit :


En fait je ne voudrais  pas avoir 3 lignes avec les mêmes infos ou juste le logiciel change à la fin.
Je voudrais une seule ligne de résultat avec a la fin mes 4 logiciels à la suite correspondant aux 4 champs qui sont crées dans la table pc.


 
Ouais mais à vouloir faire un truc à ta sauce ça embrouille tout. Et puis imagine le jour où ton pc contient 100 logiciels, tu vas t'amuser à ajouter 100 champs à ta table ?  [:tinostar]  
 
Les pc ont forcément un logiciel ? Et les logiciels sont forcément sur un pc ?

n°2053693
bko
Posté le 02-02-2011 à 14:16:01  profilanswer
 

Mes pc auront la plupart des cas entre 1 et 4 logiciel spécifiques.
 
Alors oui, j'imagine que l'astuce de créer 1 champ par logiciel n'est pas la bonne solution, mais que faire alors ?

n°2053697
Profil sup​primé
Posté le 02-02-2011 à 14:20:15  answer
 

bko a écrit :

Mes pc auront la plupart des cas entre 1 et 4 logiciel spécifiques.
 
Alors oui, j'imagine que l'astuce de créer 1 champ par logiciel n'est pas la bonne solution, mais que faire alors ?


 
Bah il faudrait faire ça propre justement, faudrait faire un mcd  :jap:  

Les pc ont forcément un logiciel ? Et les logiciels sont forcément sur un pc ?


 
Répond déjà à cette question qu'on puisse avancer te faire avancer  :jap:

n°2053747
bko
Posté le 02-02-2011 à 15:53:03  profilanswer
 

Ben ce que je veux est très simple :
 
afficher les données sur le PC (utilisateur, numero de serie...) et si un ou plusieurs logiciel spécifiques sont installés dessus. Donc on aura parfois aucun logiciel, parfois 4.

n°2053774
Alisteroid
Posté le 02-02-2011 à 17:05:11  profilanswer
 

3 tables:

 

ordinateur: id, utilisateur, numero_serie
ordinateur_logiciel: id_ordinateur, id_logiciel
logiciel : id, nom , ...

 

chercher tous les logiciels de l'ordinateur 1 :

 

select l.* from logiciel as l join ordinateur_logiciel on id=id_logiciel where id_ordinateur = 1

 

...

 

Si tu  veux les ordis et tous les logiciels en une requete :

 

select * from ordinateur o
left join ordinateur_logiciel ol on o.id=id_ordinateur
left join logiciel l on l.id=id_logiciel


Message édité par Alisteroid le 02-02-2011 à 17:08:18
mood
Publicité
Posté le 02-02-2011 à 17:05:11  profilanswer
 

n°2053944
bko
Posté le 03-02-2011 à 08:54:29  profilanswer
 

Je vais essayer avec cette requête (je dois d'abord la comprendre).
Merci en tout cas.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Jointure sur plusieurs champ ?

 

Sujets relatifs
[PHP] quelle librairie pour faire des graphes type candlestick?executer commandes root avec PHP!
[PHP]Envoyer une fichier à un utilisateur sans lui donner l'adresseScript PHP d'un éditeur de RPG
Probleme verification champ formulaire javascript[PHP] fournir un fichier hors document root
Problème d'affiche en PHP[PHP] arry_unique multidimentional + index d'array
[PHP] Méthode(s) pour mémoriser des variablesAjouter un champ DE lors d'un envoi de mail en VBA ?
Plus de sujets relatifs à : [PHP] Jointure sur plusieurs champ ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR