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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] Plusieurs "like" de suite + probleme jointure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Plusieurs "like" de suite + probleme jointure

n°2127472
ichigo56
Posté le 21-02-2012 à 11:20:06  profilanswer
 

Bonjour a tous,
 
Voila je vous explique ma problématique :
 
-J'utilise GLPI et pour me faire un rapport perso je cherche a remonter des infos :
 
      Nom Ordi | Os| licence Os | Version office
 
Dans ma base je vais avoir plusieur version d'office.
 
Mon but est de toutes les lister.
 
Pour l'instant mon code est :
 

Code :
  1. SELECT test_computers.name AS " Ordinateur" , test_operatingsystems.name AS "Os", test_computers.os_license_number AS "Licence Os", test_softwares.name AS "Version Office"
  2. FROM `test_computers_softwareversions`, test_computers, test_softwares,test_operatingsystems
  3. WHERE ( test_softwares.name LIKE  "Microsoft Office F%" OR test_softwares.name LIKE  "Microsoft Office 2000" )
  4. AND test_softwares.id = `softwareversions_id`
  5. AND  test_operatingsystems.id = test_computers.operatingsystems_id
  6. AND `computers_id`= test_computers.id
  7. ORDER BY test_computers.name


 
Sauf que le probleme c'est que ce code ne renvoie que les pc avec pour   test_softwares.name =  "Microsoft Office F%" et pas les autres valeur.
 
Si vous avez compris le probleme , ou est le beug ou le manque dans ma requete ?  
 
merci d'avance


Message édité par ichigo56 le 23-02-2012 à 09:21:00

---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
mood
Publicité
Posté le 21-02-2012 à 11:20:06  profilanswer
 

n°2127718
ichigo56
Posté le 22-02-2012 à 08:33:45  profilanswer
 

up ?


---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
n°2127721
rufo
Pas me confondre avec Lycos!
Posté le 22-02-2012 à 09:11:51  profilanswer
 

essayes :
WHERE ( (test_softwares.name LIKE  "Microsoft Office F%" ) OR (test_softwares.name LIKE  "Microsoft Office 2000" ) ) AND ...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2127727
ichigo56
Posté le 22-02-2012 à 09:43:38  profilanswer
 

Merci c'est bien ça !!  
 
Mais je dois avoir un problème de jointure j'ai 32 résultats alors que je suis censé en avoir dans les 60 ....
 
Comment traduire cette requete avec une / des left join histoires de voir les tuples sans resultat et de peut etre avoir plus de resultat ?


---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
n°2127734
rufo
Pas me confondre avec Lycos!
Posté le 22-02-2012 à 10:08:41  profilanswer
 

Question bête : pourquoi tu mets pas juste test_softwares.name LIKE  "Microsoft Office%" pour éviter le OR?
 
S'il te manque des enregistrements, c'est peut-être parce que certains champs de tes machines ne sont pas renseignés (ont une valeur NULL ou 0) comme la version du logiciel ou le type d'OS... Essayes de faire tes jointures avec des LEFT JOIN plutôt que des équi-jointures.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2127737
ichigo56
Posté le 22-02-2012 à 10:16:08  profilanswer
 

Car mes valeur ne sont pas juste Microsoft office +année, y'a des Microsoft office 2010 Web app - Microsoft Office 2010sp1 etc .... donc moi je ne veux que la version office de base sans composants.
 
Je vais tester les left Join, mais normalement je devrais avoir les 60 resultat quand je regarde les tables sous phpmyadmin et que je filtre sur l'un ou l'autre des office j'en vois 30 de cuaque coter ...
 


---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
n°2127767
ichigo56
Posté le 22-02-2012 à 11:17:17  profilanswer
 

J'ai essayer de faire des left join mais n'etant pas habituer a cette syntaxe je n'arrive pas a faire mes requetes :
 

Code :
  1. SELECT glpi_computers.name AS " Ordinateur", glpi_operatingsystems.name AS "Os", glpi_computers.os_license_number AS "Licence Os"
  2. FROM glpi_computers
  3. LEFT JOIN glpi_operatingsystems ON glpi_operatingsystems.id = glpi_computers.operatingsystems_id
  4. LEFT JOIN glpi_softwareversions ON glpi_softwareversions.computers_id=glpi_computers.id
  5. LEFTJOIN glpi_softwares ON glpi_softwares.id=glpi_computers_softwareversions.softwareversions_id
  6. ORDER BY glpi_computers.name


 
NE fonctionne j'ai une erreur sur la derniere left join ...
Un aperçu des tables ça peux aider :
http://s4.noelshack.com/uploads/im [...] tables.png


---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
n°2127774
rufo
Pas me confondre avec Lycos!
Posté le 22-02-2012 à 11:29:44  profilanswer
 

ben forcément, t'as oublié un espace entre left et join :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2127779
ichigo56
Posté le 22-02-2012 à 11:47:45  profilanswer
 

Oui donc je suis un blaireau sur ce coup-_-.

 

Mais meme avec left join j'ai le probleme, je n'ais pas le bon nombre de resultat :/

 
Code :
  1. SELECT glpi_computers.name AS " Ordinateur", glpi_operatingsystems.name AS "Os", glpi_computers.os_license_number AS "Licence Os", glpi_softwares.name AS "Office Version"
  2. FROM glpi_computers
  3. LEFT JOIN glpi_operatingsystems ON glpi_operatingsystems.id = glpi_computers.operatingsystems_id
  4. LEFT JOIN glpi_computers_softwareversions ON glpi_computers_softwareversions.computers_id=glpi_computers.id
  5. LEFT JOIN glpi_softwares ON glpi_softwares.id=glpi_computers_softwareversions.softwareversions_id
  6. ORDER BY glpi_computers.name


et normalement avec le sjointures je devrais voir les machines qui n'ont pas d'office installer mais non


Message édité par ichigo56 le 22-02-2012 à 14:05:58

---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»
n°2127901
ichigo56
Posté le 23-02-2012 à 09:20:33  profilanswer
 

Bonjour à tous j'ai reussi a faire ma requete comme je le voulais :
 

Code :
  1. SELECT DISTINCT glpi_computers_softwareversions.softwareversions_id , `glpi_computers`.`name` AS compname, `glpi_computers`.`id` AS cID, glpi_operatingsystems.name AS OSID, `glpi_computers`.os_license_number AS OsLicence,`glpi_softwareversions`.`name` AS version, glpi_softwares.name AS "Version Name"
  2. FROM `glpi_computers_softwareversions`
  3. INNER JOIN `glpi_softwareversions` ON (`glpi_computers_softwareversions`.`softwareversions_id` = `glpi_softwareversions`.`id`)
  4. INNER JOIN `glpi_computers` ON (`glpi_computers_softwareversions`.`computers_id` = `glpi_computers`.`id`)
  5. INNER JOIN glpi_operatingsystems ON (glpi_operatingsystems.id= glpi_computers.operatingsystems_id )
  6. LEFT JOIN `glpi_entities` ON (`glpi_computers`.`entities_id` = `glpi_entities`.`id`)
  7. LEFT JOIN `glpi_locations` ON (`glpi_computers`.`locations_id` = `glpi_locations`.`id`)
  8. LEFT JOIN `glpi_states` ON (`glpi_computers`.`states_id` = `glpi_states`.`id`)
  9. LEFT JOIN `glpi_groups` ON (`glpi_computers`.`groups_id` = `glpi_groups`.`id`)
  10. LEFT JOIN `glpi_users` ON (`glpi_computers`.`users_id` = `glpi_users`.`id`)
  11. LEFT JOIN glpi_softwares ON (glpi_softwares.id=glpi_softwareversions.softwares_id)
  12. WHERE ((`glpi_softwareversions`.`softwares_id` = '542') OR (`glpi_softwareversions`.`softwares_id` = '821') OR (`glpi_softwareversions`.`softwares_id` = '160'))
  13. ORDER BY `compname` ASC LIMIT 0,100


 


---------------
«C'est ainsi, que périra le monde : dans la joie générale des gens spirituels qui croiront à une farce.»

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] Plusieurs "like" de suite + probleme jointure

 

Sujets relatifs
Perl , Problème /[MySQL] Requête pour comparer 11 jours avec l'année précédente
Problème ajaxProbleme Prototype Affichage Page
Problème de lecture du CSS sous IEprobleme gestion souris
Problème script PSshutdownupdate plusieurs condition
[SQL] Optimisation de requête sqlProblème avec le fonction Match
Plus de sujets relatifs à : [RESOLU] Plusieurs "like" de suite + probleme jointure


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