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

  FORUM HardWare.fr
  Programmation
  PHP

  [php/Mysql] requete à partir d'une requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php/Mysql] requete à partir d'une requete

n°1648419
steph10200
Soyez optimistes,pas réalistes
Posté le 24-11-2007 à 17:29:32  profilanswer
 

Bonsoir,  
 
voici mon probleme :  
 
J'ai 2 tables :  
 
une table "logiciel" ( 2 colonnes : id,nomlogiciel) (la colonne logiciel contient le nom du logiciel)
une table "pc" (3 colonnes : id,nompc,listelogiciel) (la colonne listelogiciel contient un tableau au format serialize des ID des logiciels)
 
J'utilise mysql 3.23 & php 5.2.0
 
Exemple :  
 

Code :
  1. table logiciel :
  2. id      nomlogiciel
  3. 1       acrobat
  4. 2       autocad
  5. 3       iexplorer
  6. table pc :
  7. id    nompc     listelogiciel
  8. 1     PC1        a:7:{i:1;s:1:"1";i:2;s:1:"8";i:3;s:1:"3"..
  9. 2     PC2        a:6:{i:1;s:1:"4";i:2;s:1:"2";i:3;s:1:"3"...
  10. 3     PC3        a:3:{i:1;s:1:"1";i:2;s:1:"6";i:3;s:1:"3"...


 
 
J'arrive à récupérer la liste des PC qui ont tel logiciel en y spécifiant l'ID du logiciel :
Exemple avec l'id 120

Code :
  1. SELECT DISTINCT nompc FROM pc WHERE pc.logiciel LIKE "%:\"120\";%";


 
 
Mais si je veux récuperer la liste de tous les PC qui ont un logiciel qui commence par "A"
(en fait, utiliser le résultat de la requete :  
 

Code :
  1. SELECT logiciel.id FROM logiciel WHERE logiciel.nomlogiciel LIKE "A%";


 
Comment je peux lier les 2 requetes ? utiliser le résultat de la 2eme requete comme parametre dans la 1ere ???
 
je peux bien sur faire ca en php avec 2 requetes mais c'est pas tres optimisé
 
je seche sur ce problème.
 
Merci de me donner des pistes.
 


Message édité par steph10200 le 24-11-2007 à 17:48:48

---------------
--- Stéphane ---
mood
Publicité
Posté le 24-11-2007 à 17:29:32  profilanswer
 

n°1651764
goldorak69
Posté le 02-12-2007 à 00:57:52  profilanswer
 

Je pense qu'il y a une mauvaise conception à la base.
 
Il faudrait mieux avoir trois tables ici, 2 tables entités et 1 table relation:
 

Code :
  1. table LOGICIEL:
  2. id
  3. nomlogiciel
  4. table PC:
  5. id
  6. nompc
  7. table INSTALLATION:
  8. id_logiciel
  9. id_pc


 
Maintenant pour récupérer la liste de tous les PC qui ont un logiciel qui commence par "A", il suffit de faire:

Code :
  1. SELECT pc.nompc FROM pc INNER JOIN installation i ON pc.id=i.id_pc INNER JOIN logiciel l ON l.id=i.id_logiciel AND l.nomlogiciel LIKE 'A%'


 
Je te déconseille de mettre des champs sérialisés dans une table mais plutôt de bien conceptualiser la base dès le départ.


---------------
jouez gratuitement au hanjie, picross
n°1651765
steph10200
Soyez optimistes,pas réalistes
Posté le 02-12-2007 à 01:06:22  profilanswer
 

c'est tres exactement ce que j'ai fait.  
ca fonctionne tres bien.  
 
mais j'ai remarqué que ce genre de requetes nessessite un serveur relativement puissant pour avoir une réponse dans un temps correct. ( 25 seconde pour une requete sur 700 PC et 200 logiciels différents)
 


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

  [php/Mysql] requete à partir d'une requete

 

Sujets relatifs
probleme mysql + droitsRemplacer fonction mysql par odbc dans script
installer PHP et MySQL sur un IISModification de cellules a partir d'une fonction
Migration PostGre SQL vers MySQLrequete sql avec max sous oracle
Requete mysql avec min() et max()Erreur entre PHP et BD mysql
Requete SQL... Help!!!!Charger une listbox a partir du resultat d'une requete Mysql
Plus de sujets relatifs à : [php/Mysql] requete à partir d'une requete


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