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

Requêtes MySQL Discussion :

Des espaces dans une requête MySQL


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut Des espaces dans une requête MySQL
    Bonjour à tous,

    Mon problème est simple. Voici ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT id,name
    FROM glpi_softwares
    WHERE entities_id="101"
    AND name LIKE "%java%"
    AND name != "%java 7 update%"
    ORDER BY id;
    Pour faire simple, je voudrais lister l'ID et le nom de tout les logiciels contenant "java" mais pas ceux contenant "java 7 update"

    Quelqu'un aurait une idée ?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 015
    Points : 23 704
    Points
    23 704
    Par défaut
    Bonjour,

    Remplacez le != par NOT LIKE.
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par ced Voir le message
    Bonjour,

    Remplacez le != par NOT LIKE.
    Bonjour Ced,

    Si je mets "NOT LIKE" je ne prends pas en compte certaines versions de java que je veux afficher.
    Je m'explique:

    Je veux afficher toutes les versions de java inférieures à Java 7. Je pensais donc chercher quelque chose comme LIKE mais avec l'option "afficher les logiciels dont le nom ne commence pas par "java 7" mais qui contient "java"".

    Mais ma première question était mal expliquée. Je voulais savoir comment intégrer des espaces dans le LIKE. Mais j'ai trouvé ça, il faut les remplacer par des " _ ".

    Merci à vous et si vous avez une idée je suis preneur. ^^

    Arn_no

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 015
    Points : 23 704
    Points
    23 704
    Par défaut
    Peut-être en passant par les recherches en texte intégral.
    L'exemple donné semble très proche de ce que vous recherchez...
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Je regarde ça tout de suite et je vous dit.

    Merci encore !!!

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 015
    Points : 23 704
    Points
    23 704
    Par défaut
    OK, peut-être alors en passant par les expressions régulières.
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  7. #7
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Ced,

    j'étais en train de modifier ma réponse...

    Du coup j'avais oublié quelque chose (le "AND match(colonne)").

    VoIci ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT C.name AS name_comp, C.id AS id_comp, S.name AS name_soft, S.id AS id_soft
    FROM glpi_computers C
    LEFT JOIN glpi_softwares S ON C.entities_id = S.entities_id
    WHERE C.entities_id="101"
    AND MATCH (S.name)
    AGAINST ('+java -"java 7"' IN BOOLEAN MODE)
    AND S.entities_id="101"
    ORDER BY name_comp;

  8. #8
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Merci Ced pour ton aide !!

    Mais malheureusement, je me rends compte d'une chose...

    C'est que j'aimerais afficher les C.name qui n'ont pas "java 7" d'installé mais ceux qui s'arrêtent à la version 6....

    Oui je sais nous somme plusieurs dans ma tête... Et ce n'est pas simple tous les jours...

    Le résultat affiché actuellement retourne les "C.name" ayant les différentes versions de "java 6" d'installé mais ils possèdent généralement "java 7" et je voudrais seulement ceux qui ont "java 6" et pas de "java 7", en vue de les sortir du lot et de leur faire une mise à jour....

    Si quelqu'un a encore de la patience pour aider un hurluberlu comme moi ^^

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,


    passez par une clause de non existence (NOT EXISTS)

  10. #10
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Bonjour,


    passez par une clause de non existence (NOT EXISTS)
    Bonjour Punkoff,

    Première chose, merci de prendre le temps de t'interresser à mon problème.

    J'ai intégré tant bien que mal "NOT EXISTS" dans ma requête. Mais je ne suis pas du tout sur le justesse de cette dernière...

    Ma requête aujourd'hui avec "NOT EXISTS" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT DISTINCT C.name AS name_comp, C.id AS id_comp, S.name AS name_soft, S.id AS id_soft
    FROM glpi_computers C
    LEFT JOIN glpi_softwares S ON C.entities_id = S.entities_id
    WHERE C.entities_id="101"
    AND MATCH (S.name)
    AGAINST ('+java -"java_2" -"java_auto"' IN BOOLEAN MODE)
    AND S.entities_id="101"
    AND NOT EXISTS
    	(SELECT S.name
    	FROM glpi_softwares
    	WHERE MATCH (S.name)
    	AGAINST ('-"java_7"' IN BOOLEAN MODE))
    ORDER BY name_comp;
    Mais elle met "2 min 21.67 sec" à être traitée. et ne me retourne toujours pas ce que je recherche...

    Elle me sort tous les postes posédants :
    - Java 2 Runtime Environment, SE v1.4.2_02
    - Java 7 Update XY
    - Java Auto Updater

    Alors que je désire uniquement les postes ne possédants pas de "Java 7 Update XY".

    Je ne sais plus trop quoi faire là ...

    S'il vous plaît .... ...

    Autre chose, faut-il que je me débarrasse du :
    "AND MATCH (S.name)
    AGAINST ('+java -"java 2" -"java auto"' IN BOOLEAN MODE)
    "
    ?

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    La sous-requête de non existence peut être jointe avec la requête principale, c'est le but dans votre cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select *
    from ma_table1 a
    where not exists (select * from ma_table2 b where a.col_jointure = b.col_jointure and b.col_condition = ...

  12. #12
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par punkoff Voir le message
    La sous-requête de non existence peut être jointe avec la requête principale, c'est le but dans votre cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select *
    from ma_table1 a
    where not exists (select * from ma_table2 b where a.col_jointure = b.col_jointure and b.col_condition = ...
    Merci Punkoff pour l'explication.

    Voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT *
    FROM glpi_computers C
    WHERE NOT EXISTS
    (SELECT *
    FROM glpi_softwares S
    WHERE C.entities_id = S.entities_id
    AND C.entities_id="101"
    AND MATCH (S.name)
    AGAINST ('+java -"Java Auto Updater" -"Java 2 Runtime Environment, SE v1.4.2_02"' IN BOOLEAN MODE)
    AND S.entities_id="101"
    ORDER BY C.name);
    Malheureusement, elle ne prend que le début... En outre, le "NOT EXISTS" ne semble pas être pris en compte car il ne fais pas de tri sur mes entités impliqué par les lignes "AND C.entities_id="101"" et "AND S.entities_id="101"".
    Il m'affiche donc l'ensemble de la table "glpi_computers.

    J'ai surement mal rédigé ma requête....

  13. #13
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    J'ai quelque chose de mieux !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT name, id
    FROM glpi_computers C
    WHERE NOT EXISTS
    (SELECT name, id
    FROM glpi_softwares S
    WHERE C.entities_id = S.entities_id
    AND C.entities_id="101"
    AND MATCH (S.name)
    AGAINST ('+java -"Java Auto Updater" -"Java 2 Runtime Environment, SE v1.4.2_02"' IN BOOLEAN MODE)
    AND S.entities_id="101"
    ORDER BY C.name);
    qui me donne un résultat pas trop mal. J'espère juste que ce n'est pas juste un listage des hosts et de leur ID...

    Mais pour le moment toujours pas ciblé sur mon entité ("AND C.entities_id="101"" et "AND S.entities_id="101"").

  14. #14
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour

    Je me demande s'il n'aurait pas été plus simple pour vous, de décomposer votre champ "Name", en 2 : le nom du produit et la version.

    Il me semble qu'alors vous auriez pu plus facilement trouver la requête adaptée à vos besoins.

    Mais, c'est sans doute trop tard.

    Pierre

  15. #15
    Membre à l'essai
    Homme Profil pro
    Contrat de professionnalisation
    Inscrit en
    Juillet 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Contrat de professionnalisation
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par pier.antoine Voir le message
    Bonjour

    Je me demande s'il n'aurait pas été plus simple pour vous, de décomposer votre champ "Name", en 2 : le nom du produit et la version.

    Il me semble qu'alors vous auriez pu plus facilement trouver la requête adaptée à vos besoins.

    Mais, c'est sans doute trop tard.

    Pierre
    Bonjour pier.antoine,

    Il n'est jamais trop tard

    De mon côté, j'ai trouvé pourquoi ma requête ne fonctionnait pas !!!
    Il faudrait juste que j'apprenne à faire des jointures correctes ....
    I know --->

    liaison entre les tables glpi_softwares -> glpi_softwareversions -> glpi_computers_softwareversions -> glpi_computers.
    Nom : glpi_softwares - glpi_computers.JPG
Affichages : 111
Taille : 76,2 Ko

    Liaison tables glpi_softwares -> glpi_softwareversions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glpi_softwares.id=glpi_softwareversions_id
    Liaison tables glpi_softwareversions -> glpi_computers_softwareversions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glpi_softwareversions.id=glpi_computers_softwareversions.softwareversions_id
    Liaison tables glpi_computers_softwareversions -> glpi_computers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glpi_computers_softwareversions.computers_id=glpi_computers.id
    Voici ma requête finale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT g_c.name AS nom_ordinateur, g_c.id AS id_ordinateur, g_s.name AS nom_logiciel, g_s.id AS id_logiciel
    FROM glpi_computers g_c, glpi_softwares g_s, glpi_softwareversions g_sv, glpi_computers_softwareversions g_csv
    WHERE g_s.id = g_sv.softwares_id
    AND g_sv.id = g_csv.softwareversions_id
    AND g_csv.computers_id = g_c.id
    AND g_c.entities_id="101"
    AND g_s.name LIKE "%Java(TM)_6_Update%"
    AND g_s.entities_id="101"
    ORDER BY nom_ordinateur;
    Et voici le résultat :
    Nom : glpi_softwares - glpi_computers - résultat.JPG
Affichages : 113
Taille : 86,2 Ko


    !!! En tout cas merci à tous ceux qui on pris le temps de m'aider et de me donner des astuces et des conseils !!!
    ^^ A bientôt ^^

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

Discussions similaires

  1. [MySQL] Mettre des conditions dans une requête mysql avec pdo
    Par shima5 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/10/2010, 21h11
  2. [Debutant] notation des espaces dans une adresse
    Par DiVa dans le forum Débuter
    Réponses: 3
    Dernier message: 16/03/2006, 17h58
  3. Intégrer un tableau dans une requête mysql
    Par GarGamel55 dans le forum Requêtes
    Réponses: 5
    Dernier message: 21/02/2006, 19h16
  4. ajouter des données dans une requête htttp en js
    Par jeromejanson dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/10/2005, 15h34
  5. [SQL server] Comment Fusionner des données dans une requête
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2005, 15h24

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