|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Webmaster Inscription : juin 2011 Messages : 4 ![]() |
Bonjour à tous
À vrai dire, je suis plutôt novice en sql, ou du moins j'en connais les grandes lignes, mais je suis tombé sur un cas où je dois fournir une requête assez complexe et pour laquelle je suis perdu... Pour ce problème, j'ai deux tables (ou du moins deux de mes tables sont utilisées), à savoir T_Clients et T_Reservations, et voici, en "français", ce que devrait donner la requête : Sélectionner les réservations dont la date est plus grande que la date d'échéance du client concerné, le tout trié par client. J'avais pensé à un truc du genre, en sachant toutefois que c'est incorrect : Code :
Ai-je été assez clair ? Et y aurait-il quelqu'un qui pourrait m'aider ? Merci d'avance. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
Pour pouvoir émettre un avis sur ta requête, il faudrait déjà qu'on ait une idée de la structure de tes tables !
L'opérateur LIKE n'a d'intérêt que si on l'utilise avec des caractères génériques pour chercher des chaines correspondant à un modèle. Pour comparer deux chaines de caractère, l'opérateur = est bien plus adapté.
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Webmaster Inscription : juin 2011 Messages : 4 ![]() |
Ok pour l'opérateur "=", et sinon sorry, voici pour les structures des tables,
la table T_Reservations : Resa_Id - int(15) Resa_Piscine - char(2) Resa_Date - date Resa_Heure - time Resa_Seance_Type - varchar(63) Resa_Client_Id - int(11) et la table T_Clients : Client_Id - int(11) Client_Nom - varchar(63) Client_Prenom - varchar(63) Client_Tel - varchar(23) Client_Mail - varchar(63) Client_Date_Val - date Client_Date_Ech - date Client_Mail_Auto - int(5) Client_Rest - int(5) Client_Pay - int(5) ps : merci pour la rapidité et pour les balises "code" de mon 1e post, j'avais oublié |
|
|
00
|
|
|
#4 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Une jointure entre les 2 tables devrait suffire : Code :
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||
|
|
00
|
|
|
#5 | ||
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
Ta requête n'est pas totalement incorrecte et donnerait le bon résultat, mais une simple jointure fonctionne aussi bien.
Code :
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
A noter qu'avec une jointure interne, les 2 écritures (celle d'al1_24 et la mienne) sont équivalentes. Ce serait différent avec une jointure externe...
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#7 | ||||
|
Invité de passage
![]() Webmaster Inscription : juin 2011 Messages : 4 ![]() |
Un grand merci à tous, cependant, les alias ne semblent pas pris en compte sous phpMyAdmin (j'ignore si le problème vient de phpMyAdmin ou de MySQL)...
Voici la requête d'al1_24 (testé avec celle de ced et cela donne la même erreur) : Code :
Code :
|
||||
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut !
Alors, ça devient compliqué, parce qu'il n'y a pas de raison que ça ne passe pas... il reste plus qu'à tester : 1) Si tu veux vérifier l'hypothèse phpMyAdmin, essaie avec un autre client ! (Il y a un client natif mysql en ligne de commande je crois, et sinon tu dois pouvoir en trouver d'autres) 2) Si tu penses que pour une quelconque raison l'alias ne pourrait pas être pris, essaie : Code :
=> Vérifie bien en regardant la description ou en faisant un select * from t_clients
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
||
|
00
|
|
|
#9 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Enlève déjà les espaces entre res et * sur la première ligne.
Ensuite, tu es sûr que la colonne s'écrit bien "Client_Date_Ech" ? Parce que les alias fonctionnent très bien sous MySQL (quelle est ta version ?), et le problème ressemble plus à une erreur dans le nom de la colonne que dans l'alias. ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Webmaster Inscription : juin 2011 Messages : 4 ![]() |
Bon.. autant pour moi.. là je vais vraiment passer pour une bille.. mais soyons honnête..
Effectivement pour toutes mes dates j'ai écrit Date sauf pour Client_Date_Ech où j'ai en fait appelé ce champ Client_Dat_Ech, allez savoir pourquoi Bref mille mercis à tous |
|
|
00
|
|
|
#11 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
ça nous arrive tous à un moment ou à un autre
Tant qu'on ne détruit pas les données ...
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com