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 :

problème de création d'une requête SQL


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut problème de création d'une requête SQL
    Bonjour,

    Je sollicite votre aide pour mon problème. C'est pour un projet personnel. Si vous pouviez me sortir de cette m***.

    Alors j'ai une base X avec une table test, contenant 8 champs, eux même contenant plusieurs ligne.

    Et je voudrais effectuer une requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select * from test
    where `champ1` = 'nomdechamp1'
    OR `champ1` like "%nomdechamp2%"
    AND `champ2` like "%nomdechamp3%"
    AND `champ3` >= 2000
    Voila la gueule de la requête mais le problème est que, quand je fais cette requete soit la ligne : "OR `champ1` like "%nomdechamp2%"" n'est pas prise en compte lors de l'affichage de ma requête soit le tri sur la date ne s'effectue pas.

    Alors je voudrais savoir si quelqu'un avait une idée pour me sortir du trou où je me trouve depuis maintenant 2 semaines à chercher sur les tutos ou sur internet ( j'ai essayer avec une table temporaire, avec une sous-requête, avec le requête In (select ...) ) mais rien à faire.

    ALORS PLEASE HELP ME !!!!!
    Sinon je sais pas ce que je vais devenir.

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    Bonjour,

    quand tu utilises des 'or' et des 'and', il faut savoir que le 'and' est prioritaire sur le 'or', donc en fonction de ce que tu recherches, tu dois peut etre utiliser des parentheses

    ensuite tu parles d'un tri sur la date, je ne vois pas dans ta requete de tri.
    Sur quelle colonne veux tu trier?

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 738
    Points
    11 738
    Par défaut
    Tu devrais donner les vrais noms et textes exemples de ta requête, ça aide à comprendre l'objectif de la requête.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Alors tout d'abord merci de vos reponses.
    Ensuite pour Antoun voila la vrai commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select * from `test`
    where `type`='publication'
    or `type` like "%ouvrage%"
    and `auteur` like "%mangelinck%"
    and `année` >= 2000
    order by `test`.`année` ASC;
    Par rapport "au tri" sur la date je me suis trompé d'expression c'est prendre les date superieur à 2000.

    Merci et a bientot.

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 738
    Points
    11 738
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select * from `test`
    where (`type`='publication'
    or `type` like "%ouvrage%")
    and `auteur` like "%mangelinck%"
    and `année` >= 2000
    order by `test`.`année` ASC;
    Le AND est prioritaire sur le OR, donc ta syntaxe précédente était l'équivalent de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    where (`type`='publication')
    or (`type` like "%ouvrage%"
    and `auteur` like "%mangelinck%"
    and `année` >= 2000)
    Donc le filtre sur l'année ne s'appliquait qu'aux ouvrages et non aux publications.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci pour ta réponse si rapide.

    Alors j'ai testé la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select `Auteurs`,`Titre`,`source`, `source_comp`,`Année` 
    from `test` 
    WHERE (`Type`='publication') 
    OR (`Type` LIKE "%ouvrage%" AND `Auteurs` LIKE "%Autran%" AND `Année` >= 2000) 
    ORDER BY `test`.`Année` ASC
    Mais j'ai toujours le même problème au niveau des dates. Cette requête fonctionne mais le filtre sur l'année ne s'applique pas. J'ai toujours des dates antérieur à 2000. Pourquoi ??

    Merci encore de m'aider à résoudre mon problème.

    P.S : J'avoue que cela fait presque 2 ans que je n'ai pas fait de la bdd et mes connaissances se sont amoindris et raccourcis avec le temps.

    Je rajoute un screen apres l'execution de la commande pour mieux comprendre

  7. #7
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    ce ne sont pas des types 'publications' tout ce qui est ramené pour des dates inférieures à 2000?

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Qu'entend tu par :
    ce ne sont pas des types 'publications' tout ce qui est ramené pour des dates inférieures à 2000?
    Ce que me ramène est toutes les lignes dont la date est supérieur à 2000...
    Et je n'ai toujours pas compris pourquoi ca me ramène des dates inferieur a 2000 et pourquoi j'ai des lignes ou l'auteur n'est pas Autran ???

    Merci de m'aiguiller...

  9. #9
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    tout est une question de priorité entre le OR et le AND comme cela a été dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT `Auteurs`,`Titre`,`source`, `source_comp`,`Année` 
    FROM `test` 
    WHERE (`Type`='publication' OR `Type` LIKE "%ouvrage%") 
    AND `Auteurs` LIKE "%Autran%" AND `Année` >= 2000) 
    ORDER BY `test`.`Année` ASC
    Antoun t'avais déja proposé cette requete il me semble.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci Antoun et Cybher.

    J'avais du oublier de mettre des parenthèses quelque part donc maintenant cela fonctionne parfaitement. Je vous remercie avec ca je vais pouvoir me sortir de la ou je me trouvais.

    MERCI A VOUS TOUS !!!!

    P.S : tout ca n'était qu'un histoire de parenthèse mais LOL je vous remercie. Il est temps que je me remette au sql moi ...

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

Discussions similaires

  1. problème de syntaxe avec une requête SQL
    Par funkyjul dans le forum Développement
    Réponses: 4
    Dernier message: 27/10/2008, 21h15
  2. Problème d'espaces dans une requête SQL
    Par Wonesek dans le forum SQL
    Réponses: 9
    Dernier message: 22/04/2008, 16h46
  3. Problème de cumul dans une requête SQL
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 13/09/2007, 05h56
  4. Problème avec like dans une requête SQL
    Par Boublou dans le forum SQL
    Réponses: 2
    Dernier message: 16/08/2007, 15h46
  5. Problème de SUM sur une requête SQL
    Par Lapicure dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/06/2007, 11h51

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