Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2007, 13h58   #1
Membre actif
 
Avatar de bigltnt
 
Inscription : mars 2007
Messages : 221
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 221
Points : 155
Points : 155
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 :
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
bigltnt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 14h01   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
Bonjour,

Dans ton schéma de table, il manque visiblement la colonne id_typeress...
Voilà 2 solutions identiques :
Code :
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 :
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
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 14h01   #3
Membre éclairé
 
Avatar de piff62
 
Inscription : décembre 2003
Messages : 431
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : décembre 2003
Messages : 431
Points : 362
Points : 362
Code :
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 ..
piff62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 14h10   #4
Membre actif
 
Avatar de bigltnt
 
Inscription : mars 2007
Messages : 221
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 221
Points : 155
Points : 155
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 :
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"
bigltnt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 14h17   #5
Membre régulier
 
Avatar de J_Lennon
 
Inscription : mars 2007
Messages : 126
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : mars 2007
Messages : 126
Points : 75
Points : 75
Personnellement, je préfére celle ci:
Citation:
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 :
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
J_Lennon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 14h20   #6
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
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 :
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
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 14h20   #7
Membre éclairé
 
Avatar de piff62
 
Inscription : décembre 2003
Messages : 431
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : décembre 2003
Messages : 431
Points : 362
Points : 362
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 :
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 ..
piff62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 16h40   #8
Membre actif
 
Avatar de bigltnt
 
Inscription : mars 2007
Messages : 221
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 221
Points : 155
Points : 155
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
bigltnt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h51.


 
 
 
 
Partenaires

Hébergement Web