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

 MySQL Discussion :

[Noobie]Perdu dans un SELECT avec un 'OR'


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut [Noobie]Perdu dans un SELECT avec un 'OR'
    Bonjour ! Je suis débutant

    J'ai une table reservation(id_reservation, id_ressource, id_util, debut_reservation, fin_reservation, statut_reservation)

    Voici la requete effectuée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND statut_reservation = ( 'A'
    OR 'M' )
    ORDER BY debut_reservation
    Le problème est que le retour de la requete contient toutes les entrées, avec les statut_reservation à 'M', 'V', 'A' et 'R'

    Bref la requete ne marche pas. Comment puis-je faire (je ne veux que les 'A' et 'M').

    Merci

  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 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Dans ton schéma de table, il manque visiblement la colonne id_typeress...
    Voilà 2 solutions identiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND statut_reservation IN ( 'A', 'M' )
    ORDER BY debut_reservation
    ou alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND (statut_reservation =  'A' OR statut_reservation = 'M' )
    ORDER BY debut_reservation
    ced
    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 chevronné Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND statut_reservation IN ( 'A','M' )
    ORDER BY debut_reservation
    Et avec ca ?

    [EDIT] J'ai pas etait assez rapide visiblement ..

  4. #4
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Merci beaucoup ! Je ne connaissais pas le IN utilisé comme cela !

    Vu que malgrè mon age j'ai déjà quelques manies, je vais prendre la premiere solution proposée par ced
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND (statut_reservation =  'A' OR statut_reservation = 'M' )
    ORDER BY debut_reservation
    Je trouve ca plus clair

    Encore merci à vous deux, et déolé pour la question "bas niveau"

  5. #5
    Membre très actif Avatar de J_Lennon
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Par défaut
    Personnellement, je préfére celle ci:
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND statut_reservation IN ( 'A', 'M' )
    ORDER BY debut_reservation
    Elle est plus courte et tellement plus utile. Imagine que tu désires trier les classes A, B , C , D, E, F, G, H; Je te voix mal faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND (statut_reservation =  'A' OR statut_reservation = 'B' OR statut_reservation = 'C' OR statut_reservation = 'D' OR statut_reservation = 'E' OR statut_reservation = 'F' OR statut_reservation = 'G' OR statut_reservation = 'H' )
    ORDER BY debut_reservation
    Dans de telles conditions, ta requete devient bien lourde

  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 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Citation Envoyé par bigltnt
    Merci beaucoup ! Je ne connaissais pas le IN utilisé comme cela !

    Vu que malgrè mon age j'ai déjà quelques manies, je vais prendre la premiere solution proposée par ced
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND (statut_reservation =  'A' OR statut_reservation = 'M' )
    ORDER BY debut_reservation
    Je trouve ca plus clair
    Ca va que tu n'aies que 2 types à retourner, mais si tu en avais plus, le IN est carrément plus pratique et lisible (je te laisse imaginer la tête de la requête avec 10 "OR" dans la clause where au milieu d'autres "AND"...)

    ced
    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 chevronné Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Par défaut
    Citation Envoyé par bigltnt
    Merci beaucoup ! Je ne connaissais pas le IN utilisé comme cela !

    Vu que malgrè mon age j'ai déjà quelques manies, je vais prendre la premiere solution proposée par ced
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM reservation
    WHERE id_typeress = '1'
    AND (statut_reservation =  'A' OR statut_reservation = 'M' )
    ORDER BY debut_reservation
    Je trouve ca plus clair

    Encore merci à vous deux, et déolé pour la question "bas niveau"
    Je comprends .. on a tous nos habitudes de programmation ..

  8. #8
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Oui vous avez tous raison. J'avais pas imaginé en dehors de mon cas. Je changerais probablement si le cas doit s'adapter à plus de 2 types ^^

    Merci a vous pour vos commentaires et conseils c'est sympa

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

Discussions similaires

  1. [MySQL] SELECT avec une boucle for : perdu dans la syntaxe
    Par cyberfred1073 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/04/2014, 22h28
  2. Modulo dans un SELECT avec Alias ou Sans
    Par deco76 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 07/02/2013, 00h51
  3. Réponses: 2
    Dernier message: 07/06/2010, 03h13
  4. [AJAX] test dans un select avec onchange
    Par stomerfull dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/01/2009, 16h08
  5. Selection avec la souris dans une zone de texte
    Par GESCOM2000 dans le forum IHM
    Réponses: 8
    Dernier message: 11/02/2006, 10h12

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