1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" wrote in message
> news:
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" wrote in message
>>>news:
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" a écrit dans le message de
>>>>news:uchb0%
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" a écrit dans le message
>>
>>de
>>
>>>>>>news:%
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" <aa@aa.aa> wrote in message
> news:uNgHSdfLEHA.808@tk2msftngp13.phx.gbl...
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" <l.moreau@SUPPRIMERCECIsystonic.fr> a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$1@s1.read.news.oleane.net...
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" <aa@aa.aa> wrote in message
>>>news:urSTk8eLEHA.3052@TK2MSFTNGP12.phx.gbl...
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
>>>>news:uchb0%23dLEHA.892@TK2MSFTNGP09.phx.gbl...
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message
>>
>>de
>>
>>>>>>news:%23yr1LwcLEHA.4080@TK2MSFTNGP12.phx.gbl...
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:brouardf@club-internet.fr
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:brouardf@club-internet.fr
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" wrote in message
> news:
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" wrote in message
>>>news:
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" a écrit dans le message de
>>>>news:uchb0%
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" a écrit dans le message
>>
>>de
>>
>>>>>>news:%
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" wrote in message
> news:
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" wrote in message
>>>news:
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" a écrit dans le message de
>>>>news:uchb0%
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" a écrit dans le message
>>
>>de
>>
>>>>>>news:%
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" <aa@aa.aa> wrote in message
> news:uNgHSdfLEHA.808@tk2msftngp13.phx.gbl...
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" <l.moreau@SUPPRIMERCECIsystonic.fr> a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$1@s1.read.news.oleane.net...
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" <aa@aa.aa> wrote in message
>>>news:urSTk8eLEHA.3052@TK2MSFTNGP12.phx.gbl...
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
>>>>news:uchb0%23dLEHA.892@TK2MSFTNGP09.phx.gbl...
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message
>>
>>de
>>
>>>>>>news:%23yr1LwcLEHA.4080@TK2MSFTNGP12.phx.gbl...
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:brouardf@club-internet.fr
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:brouardf@club-internet.fr
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" wrote in message
> news:
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" wrote in message
>>>news:
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" a écrit dans le message de
>>>>news:uchb0%
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" a écrit dans le message
>>
>>de
>>
>>>>>>news:%
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" wrote in message
> news:
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" wrote in message
>>>news:
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" a écrit dans le message de
>>>>news:uchb0%
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" a écrit dans le message
>>
>>de
>>
>>>>>>news:%
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" <aa@aa.aa> wrote in message
> news:uNgHSdfLEHA.808@tk2msftngp13.phx.gbl...
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" <l.moreau@SUPPRIMERCECIsystonic.fr> a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$1@s1.read.news.oleane.net...
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" <aa@aa.aa> wrote in message
>>>news:urSTk8eLEHA.3052@TK2MSFTNGP12.phx.gbl...
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
>>>>news:uchb0%23dLEHA.892@TK2MSFTNGP09.phx.gbl...
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message
>>
>>de
>>
>>>>>>news:%23yr1LwcLEHA.4080@TK2MSFTNGP12.phx.gbl...
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:brouardf@club-internet.fr
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:brouardf@club-internet.fr
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
1) à quelque chouia sa requête est bonne.
2) c'est une solution de facilité à cause du TOP
3) je te donne la solution, à condition que tu me donne les ordres SQL de
ton jeu d'essais !
A +
Laurent Moreau a écrit:
> Ben non ça m'a pas l'air bon ça...
>
> La tu vas avoir le prix maximum, alors que toi tu veux le dernier prix
> la date que tu donnes.
>
>
>
> Laurent.
>
>
>
> "Olivier" wrote in message
> news:
>
>>YES !!!
>>
>>Avec :
>>
>>SELECT D.date_sejour,
>>(SELECT MAX(T.prix)
>>FROM tarifs_chambre T
>>WHERE (T.date_debut <= D.date_sejour)) AS Prix
>>FROM sejours D
>>
>>Merci beaucoup
>>Olivier
>>
>>
>>
>>"Laurent Moreau" a écrit dans le
>
> message
>
>>de news:c6r21t$ed5$
>>
>>>Tu peux écrire une fdu qui fait:
>>>
>>>SELECT TOP 1 prix FROM T_tarifs WHERE
>>>ORDER BY date_debut_tarifs DESC
>>>
>>>Laurent.
>>>
>>>
>>>
>>>
>>>"Olivier" wrote in message
>>>news:
>>>
>>>>Bon, résultat après 3 heures...
>>>>
>>>>J'y arrive pas :-(
>>>>
>>>>Donc, je vais me faire une fonction en VB qui me le fera directment
>
> dans
>
>>>mon
>>>
>>>>programme
>>>>
>>>>Merci
>>>>Olivier
>>>>
>>>>
>>>>
>>>>"Fred BROUARD" a écrit dans le message de
>>>>news:uchb0%
>>>>
>>>>>il faut faire une sous requête corrélée :
>>>>>
>>>>>Rechercher le MAX de la date des prix inférieure à la date de résa.
>>>>>
>>>>>A +
>>>>>
>>>>>Olivier a écrit:
>>>>>
>>>>>>Justement, j'ai même ton bouquin (Excellent ! par ailleurs)
>>>>>>C'est pourquoi j'ai même pris l'exemple des chambres d'hotels. :-)
>>>>>>
>>>>>>Mais ton exemple sur ton site :
>>>>>>http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_math
>>>>>>Ce n'est pas vraiment ce que je souhaite :-(
>>>>>>
>>>>>>Pour moi, le prix d'une chambre, n'est pas rattaché à une chambre,
>>>
>>>mais
>>>
>>>>>>varie dans une période donnée.
>>>>>>Exemple de prix :
>>>>>>A partir du '01/01/2004' vaut 10.43
>>>>>>A partir du '12/02/2004' vaut 22,65
>>>>>>A partir du '26/06/2004' vaut 27,70
>>>>>>
>>>>>>
>>>>>>Donc pour les séjours suivants, je dois obtenir le résultat
>>>>>>
>>>>>>Chambre N°1, le '10/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '12/01/2004' prix = 10.43
>>>>>>Chambre N°1, le '02/02/2004' prix = 10.43
>>>>>>Chambre N°1, le '20/02/2004' prix = 22,65
>>>>>>
>>>>>>Chambre N°2, le '10/04/2004' prix = 22,65
>>>>>>Chambre N°2, le '29/05/2004' prix = 22,65
>>>>>>Chambre N°2, le '01/07/2004' prix = 27,70
>>>>>>
>>>>>>etc...
>>>>>>
>>>>>>En fait mon problème est que le prix d'une chambre se situe
>>
>>forcément
>>
>>>>dans
>>>>
>>>>>>une période entre de deux dates.
>>>>>>J'espère être clair ?
>>>>>>
>>>>>>Merci
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Fred BROUARD" a écrit dans le message
>>
>>de
>>
>>>>>>news:%
>>>>>>
>>>>>>
>>>>>>>la il suffit de parcourir mon site, car l'exemple est une gestion
>>>>
>>>>d'hotel
>>>>
>>>>>>avec tranches tarifaires !!!
>>>>>>
>>>>>>
>>>>>>>A +
>>>>>>>
>>>>>>>
>>>>>>>--
>>>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>>
>>web
>>
>>>>>>>Livre SQL - col. Référence :
>>
>>http://sqlpro.developpez.com/bookSQL.html
>>
>>>>>>>Le site du SQL, pour débutants et pros :
>>
>>http://sqlpro.developpez.com
>>
>>>>>>>****************** mailto:
>>
>>******************
>>
>>>>>>>Olivier a écrit:
>>>>>>>
>>>>>>>
>>>>>>>>Bonjour,
>>>>>>>>
>>>>>>>>Soit une table T_sejours avec clientID, date_sejour
>>>>>>>>
>>>>>>>>soit une table T_tarifs as ID, date_debut_tarifs, prix
>>>>>>>>
>>>>>>>>exemple :
>>>>>>>>
>>>>>>>>1, '01/01/2004', 10.43
>>>>>>>>2, '12/02/2004', 22,65
>>>>>>>>3, '26/06/2004', 27,70
>>>>>>>>
>>>>>>>>
>>>>>>>>Donc, je voudrais savoir tous les sejours qui ont eu lieu entre
>>
>>deux
>>
>>>>>>dates
>>>>>>
>>>>>>
>>>>>>>>et pour chacun, le prix correspondant.
>>>>>>>>
>>>>>>>>Par ex :
>>>>>>>>Une chambre d'hotel, à une date donnée, a forcément un prix.
>>>>>>>>
>>>>>>>>Là, pour faire ma requette : je sèche :-(
>>>>>>>>
>>>>>>>>Merci
>>>>>>>>Olivier
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>--
>>>>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
>
> web
>
>>>>>Livre SQL - col. Référence :
>
> http://sqlpro.developpez.com/bookSQL.html
>
>>>>>Le site du SQL, pour débutants et pros :
>
> http://sqlpro.developpez.com
>
>>>>>****************** mailto:
>
> ******************
>
>>>>
>>>
>>
>
>
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
La solution avec le TOP !
SELECT D.date_sejour,(SELECT TOP 1 prix
FROM tarifs T
WHERE date_debut <= D.date_sejour
ORDER BY prix DESC) AS Prix
FROM sejours D
A +
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
La solution avec le TOP !
SELECT D.date_sejour,(SELECT TOP 1 prix
FROM tarifs T
WHERE date_debut <= D.date_sejour
ORDER BY prix DESC) AS Prix
FROM sejours D
A +
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
La solution avec le TOP !
SELECT D.date_sejour,(SELECT TOP 1 prix
FROM tarifs T
WHERE date_debut <= D.date_sejour
ORDER BY prix DESC) AS Prix
FROM sejours D
A +
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Merci
J'obtiens le même résultat avec ma requête, non ?
SELECT D.date_sejour,
(SELECT MAX(T.prix)
FROM tarifs_chambre T
WHERE (T.date_debut <= D.date_sejour)) AS Prix
FROM sejours D
Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
Enfin, ne perds plus de temps avec çà.
Ca marche, c'est le plus important, et je t'en remercie, ainsi que
PS : des projets de livre ;-)
Merci
Olivier
"Fred BROUARD" a écrit dans le message de
news:
> La solution avec le TOP !
>
> SELECT D.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= D.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours D
>
> A +
>
>
> --
> Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
> Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> ****************** mailto: ******************
>
Merci
J'obtiens le même résultat avec ma requête, non ?
SELECT D.date_sejour,
(SELECT MAX(T.prix)
FROM tarifs_chambre T
WHERE (T.date_debut <= D.date_sejour)) AS Prix
FROM sejours D
Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
Enfin, ne perds plus de temps avec çà.
Ca marche, c'est le plus important, et je t'en remercie, ainsi que
PS : des projets de livre ;-)
Merci
Olivier
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:OV447mnLEHA.3664@TK2MSFTNGP10.phx.gbl...
> La solution avec le TOP !
>
> SELECT D.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= D.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours D
>
> A +
>
>
> --
> Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
> Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> ****************** mailto:brouardf@club-internet.fr ******************
>
Merci
J'obtiens le même résultat avec ma requête, non ?
SELECT D.date_sejour,
(SELECT MAX(T.prix)
FROM tarifs_chambre T
WHERE (T.date_debut <= D.date_sejour)) AS Prix
FROM sejours D
Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
Enfin, ne perds plus de temps avec çà.
Ca marche, c'est le plus important, et je t'en remercie, ainsi que
PS : des projets de livre ;-)
Merci
Olivier
"Fred BROUARD" a écrit dans le message de
news:
> La solution avec le TOP !
>
> SELECT D.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= D.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours D
>
> A +
>
>
> --
> Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
> Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> ****************** mailto: ******************
>
Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé, alors
que toi tu recherche le dernier prix avant une date précise:
ex:
1 jan: 10?
5 fev: 20 ?
8 mars: 15?
9 avril: 35?
Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
probleme au départ)
avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
au 1 avril, ce n'est pas bon.
La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
antérieur au 1 avril, soit 15?
Laurent.
"Olivier" wrote in message
news:
> Merci
>
> J'obtiens le même résultat avec ma requête, non ?
> SELECT D.date_sejour,
> (SELECT MAX(T.prix)
> FROM tarifs_chambre T
> WHERE (T.date_debut <= D.date_sejour)) AS Prix
> FROM sejours D
>
> Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
>
> Enfin, ne perds plus de temps avec çà.
> Ca marche, c'est le plus important, et je t'en remercie, ainsi que
Laurent.
>
> PS : des projets de livre ;-)
>
> Merci
> Olivier
>
>
> "Fred BROUARD" a écrit dans le message de
> news:
> > La solution avec le TOP !
> >
> > SELECT D.date_sejour,(SELECT TOP 1 prix
> > FROM tarifs T
> > WHERE date_debut <= D.date_sejour
> > ORDER BY prix DESC) AS Prix
> > FROM sejours D
> >
> > A +
> >
> >
> > --
> > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
> > Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> > Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> > ****************** mailto: ******************
> >
>
>
Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé, alors
que toi tu recherche le dernier prix avant une date précise:
ex:
1 jan: 10?
5 fev: 20 ?
8 mars: 15?
9 avril: 35?
Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
probleme au départ)
avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
au 1 avril, ce n'est pas bon.
La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
antérieur au 1 avril, soit 15?
Laurent.
"Olivier" <aa@aa.aa> wrote in message
news:uW8pRIpLEHA.3664@TK2MSFTNGP10.phx.gbl...
> Merci
>
> J'obtiens le même résultat avec ma requête, non ?
> SELECT D.date_sejour,
> (SELECT MAX(T.prix)
> FROM tarifs_chambre T
> WHERE (T.date_debut <= D.date_sejour)) AS Prix
> FROM sejours D
>
> Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
>
> Enfin, ne perds plus de temps avec çà.
> Ca marche, c'est le plus important, et je t'en remercie, ainsi que
Laurent.
>
> PS : des projets de livre ;-)
>
> Merci
> Olivier
>
>
> "Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
> news:OV447mnLEHA.3664@TK2MSFTNGP10.phx.gbl...
> > La solution avec le TOP !
> >
> > SELECT D.date_sejour,(SELECT TOP 1 prix
> > FROM tarifs T
> > WHERE date_debut <= D.date_sejour
> > ORDER BY prix DESC) AS Prix
> > FROM sejours D
> >
> > A +
> >
> >
> > --
> > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
> > Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> > Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> > ****************** mailto:brouardf@club-internet.fr ******************
> >
>
>
Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé, alors
que toi tu recherche le dernier prix avant une date précise:
ex:
1 jan: 10?
5 fev: 20 ?
8 mars: 15?
9 avril: 35?
Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
probleme au départ)
avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
au 1 avril, ce n'est pas bon.
La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
antérieur au 1 avril, soit 15?
Laurent.
"Olivier" wrote in message
news:
> Merci
>
> J'obtiens le même résultat avec ma requête, non ?
> SELECT D.date_sejour,
> (SELECT MAX(T.prix)
> FROM tarifs_chambre T
> WHERE (T.date_debut <= D.date_sejour)) AS Prix
> FROM sejours D
>
> Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
>
> Enfin, ne perds plus de temps avec çà.
> Ca marche, c'est le plus important, et je t'en remercie, ainsi que
Laurent.
>
> PS : des projets de livre ;-)
>
> Merci
> Olivier
>
>
> "Fred BROUARD" a écrit dans le message de
> news:
> > La solution avec le TOP !
> >
> > SELECT D.date_sejour,(SELECT TOP 1 prix
> > FROM tarifs T
> > WHERE date_debut <= D.date_sejour
> > ORDER BY prix DESC) AS Prix
> > FROM sejours D
> >
> > A +
> >
> >
> > --
> > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
> > Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> > Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> > ****************** mailto: ******************
> >
>
>
A partir du 01 Janvier le prix est de 40 euros
A partir du 15 Février le prix est de 30 euros
A partir du 20 Mars le prix est de 20 euros
A partir du 20 Avril le prix est de 10 euros
???
Je dois surement mettre mal exprimé.
Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
:-(
C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
Ma table TARIFS exprime des prix " à partir d'une date "
Ex:
A partir du 01 Janvier le prix est de 10 euros
A partir du 15 Février le prix est de 20 euros
A partir du 20 Mars le prix est de 30 euros
A partir du 20 Avril le prix est de 40 euros
Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
suivantes :
10 Février , j'obtient bien la valeur 10
20 Février , j'obtient bien la valeur 20
01 Avril, j'obtient bien la valeur 30
25 Avril, j'obtient bien la valeur 40
Non ?
-- SCRIPT SQL ---------------------------------
USE master
GO
IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name > 'monhotel')
ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE monhotel
GO
CREATE DATABASE monhotel
GO
USE monhotel
GO
create table tarifs
(
date_debut DATETIME,
prix INT
);
GO
create table sejours
(
date_sejour DATETIME
);
GO
insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
GO
insert into sejours (date_sejour) VALUES ('10/02/2003') ;
insert into sejours (date_sejour) VALUES ('20/02/2003') ;
insert into sejours (date_sejour) VALUES ('01/04/2003') ;
insert into sejours (date_sejour) VALUES ('25/04/2003') ;
GO
-- REQUETE AVEC TOP
SELECT S.date_sejour,(SELECT TOP 1 prix
FROM tarifs T
WHERE date_debut <= S.date_sejour
ORDER BY prix DESC) AS Prix
FROM sejours S
GO
-- REQUETE AVEC MAX
SELECT S.date_sejour, (SELECT MAX(T.prix)
FROM tarifs T
WHERE (T.date_debut <= S.date_sejour)) AS Prix
FROM sejours S
GO
-- FIN SCRIPT SQL ----------------------------
"Laurent Moreau" a écrit dans le
de news:c6t5un$6e3$
> Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
> que toi tu recherche le dernier prix avant une date précise:
>
> ex:
> 1 jan: 10?
> 5 fev: 20 ?
> 8 mars: 15?
> 9 avril: 35?
>
>
> Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> probleme au départ)
>
> avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
antérieur
> au 1 avril, ce n'est pas bon.
>
> La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> antérieur au 1 avril, soit 15?
>
>
>
> Laurent.
>
>
>
>
>
> "Olivier" wrote in message
> news:
> > Merci
> >
> > J'obtiens le même résultat avec ma requête, non ?
> > SELECT D.date_sejour,
> > (SELECT MAX(T.prix)
> > FROM tarifs_chambre T
> > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > FROM sejours D
> >
> > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> >
> > Enfin, ne perds plus de temps avec çà.
> > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> Laurent.
> >
> > PS : des projets de livre ;-)
> >
> > Merci
> > Olivier
> >
> >
> > "Fred BROUARD" a écrit dans le message de
> > news:
> > > La solution avec le TOP !
> > >
> > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > FROM tarifs T
> > > WHERE date_debut <= D.date_sejour
> > > ORDER BY prix DESC) AS Prix
> > > FROM sejours D
> > >
> > > A +
> > >
> > >
> > > --
> > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
> > > Livre SQL - col. Référence :
> > > Le site du SQL, pour débutants et pros :
> > > ****************** mailto:
> > >
> >
> >
>
>
A partir du 01 Janvier le prix est de 40 euros
A partir du 15 Février le prix est de 30 euros
A partir du 20 Mars le prix est de 20 euros
A partir du 20 Avril le prix est de 10 euros
???
Je dois surement mettre mal exprimé.
Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
:-(
C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
Ma table TARIFS exprime des prix " à partir d'une date "
Ex:
A partir du 01 Janvier le prix est de 10 euros
A partir du 15 Février le prix est de 20 euros
A partir du 20 Mars le prix est de 30 euros
A partir du 20 Avril le prix est de 40 euros
Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
suivantes :
10 Février , j'obtient bien la valeur 10
20 Février , j'obtient bien la valeur 20
01 Avril, j'obtient bien la valeur 30
25 Avril, j'obtient bien la valeur 40
Non ?
-- SCRIPT SQL ---------------------------------
USE master
GO
IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name > 'monhotel')
ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE monhotel
GO
CREATE DATABASE monhotel
GO
USE monhotel
GO
create table tarifs
(
date_debut DATETIME,
prix INT
);
GO
create table sejours
(
date_sejour DATETIME
);
GO
insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
GO
insert into sejours (date_sejour) VALUES ('10/02/2003') ;
insert into sejours (date_sejour) VALUES ('20/02/2003') ;
insert into sejours (date_sejour) VALUES ('01/04/2003') ;
insert into sejours (date_sejour) VALUES ('25/04/2003') ;
GO
-- REQUETE AVEC TOP
SELECT S.date_sejour,(SELECT TOP 1 prix
FROM tarifs T
WHERE date_debut <= S.date_sejour
ORDER BY prix DESC) AS Prix
FROM sejours S
GO
-- REQUETE AVEC MAX
SELECT S.date_sejour, (SELECT MAX(T.prix)
FROM tarifs T
WHERE (T.date_debut <= S.date_sejour)) AS Prix
FROM sejours S
GO
-- FIN SCRIPT SQL ----------------------------
"Laurent Moreau" <l.moreau@SUPPRIMERCECIsystonic.fr> a écrit dans le
de news:c6t5un$6e3$1@s1.read.news.oleane.net...
> Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
> que toi tu recherche le dernier prix avant une date précise:
>
> ex:
> 1 jan: 10?
> 5 fev: 20 ?
> 8 mars: 15?
> 9 avril: 35?
>
>
> Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> probleme au départ)
>
> avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
antérieur
> au 1 avril, ce n'est pas bon.
>
> La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> antérieur au 1 avril, soit 15?
>
>
>
> Laurent.
>
>
>
>
>
> "Olivier" <aa@aa.aa> wrote in message
> news:uW8pRIpLEHA.3664@TK2MSFTNGP10.phx.gbl...
> > Merci
> >
> > J'obtiens le même résultat avec ma requête, non ?
> > SELECT D.date_sejour,
> > (SELECT MAX(T.prix)
> > FROM tarifs_chambre T
> > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > FROM sejours D
> >
> > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> >
> > Enfin, ne perds plus de temps avec çà.
> > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> Laurent.
> >
> > PS : des projets de livre ;-)
> >
> > Merci
> > Olivier
> >
> >
> > "Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
> > news:OV447mnLEHA.3664@TK2MSFTNGP10.phx.gbl...
> > > La solution avec le TOP !
> > >
> > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > FROM tarifs T
> > > WHERE date_debut <= D.date_sejour
> > > ORDER BY prix DESC) AS Prix
> > > FROM sejours D
> > >
> > > A +
> > >
> > >
> > > --
> > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
> > > Livre SQL - col. Référence :
> > > Le site du SQL, pour débutants et pros :
> > > ****************** mailto:brouardf@club-internet.fr
> > >
> >
> >
>
>
A partir du 01 Janvier le prix est de 40 euros
A partir du 15 Février le prix est de 30 euros
A partir du 20 Mars le prix est de 20 euros
A partir du 20 Avril le prix est de 10 euros
???
Je dois surement mettre mal exprimé.
Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
:-(
C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
Ma table TARIFS exprime des prix " à partir d'une date "
Ex:
A partir du 01 Janvier le prix est de 10 euros
A partir du 15 Février le prix est de 20 euros
A partir du 20 Mars le prix est de 30 euros
A partir du 20 Avril le prix est de 40 euros
Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
suivantes :
10 Février , j'obtient bien la valeur 10
20 Février , j'obtient bien la valeur 20
01 Avril, j'obtient bien la valeur 30
25 Avril, j'obtient bien la valeur 40
Non ?
-- SCRIPT SQL ---------------------------------
USE master
GO
IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name > 'monhotel')
ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE monhotel
GO
CREATE DATABASE monhotel
GO
USE monhotel
GO
create table tarifs
(
date_debut DATETIME,
prix INT
);
GO
create table sejours
(
date_sejour DATETIME
);
GO
insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
GO
insert into sejours (date_sejour) VALUES ('10/02/2003') ;
insert into sejours (date_sejour) VALUES ('20/02/2003') ;
insert into sejours (date_sejour) VALUES ('01/04/2003') ;
insert into sejours (date_sejour) VALUES ('25/04/2003') ;
GO
-- REQUETE AVEC TOP
SELECT S.date_sejour,(SELECT TOP 1 prix
FROM tarifs T
WHERE date_debut <= S.date_sejour
ORDER BY prix DESC) AS Prix
FROM sejours S
GO
-- REQUETE AVEC MAX
SELECT S.date_sejour, (SELECT MAX(T.prix)
FROM tarifs T
WHERE (T.date_debut <= S.date_sejour)) AS Prix
FROM sejours S
GO
-- FIN SCRIPT SQL ----------------------------
"Laurent Moreau" a écrit dans le
de news:c6t5un$6e3$
> Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
> que toi tu recherche le dernier prix avant une date précise:
>
> ex:
> 1 jan: 10?
> 5 fev: 20 ?
> 8 mars: 15?
> 9 avril: 35?
>
>
> Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> probleme au départ)
>
> avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
antérieur
> au 1 avril, ce n'est pas bon.
>
> La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> antérieur au 1 avril, soit 15?
>
>
>
> Laurent.
>
>
>
>
>
> "Olivier" wrote in message
> news:
> > Merci
> >
> > J'obtiens le même résultat avec ma requête, non ?
> > SELECT D.date_sejour,
> > (SELECT MAX(T.prix)
> > FROM tarifs_chambre T
> > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > FROM sejours D
> >
> > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> >
> > Enfin, ne perds plus de temps avec çà.
> > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> Laurent.
> >
> > PS : des projets de livre ;-)
> >
> > Merci
> > Olivier
> >
> >
> > "Fred BROUARD" a écrit dans le message de
> > news:
> > > La solution avec le TOP !
> > >
> > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > FROM tarifs T
> > > WHERE date_debut <= D.date_sejour
> > > ORDER BY prix DESC) AS Prix
> > > FROM sejours D
> > >
> > > A +
> > >
> > >
> > > --
> > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
> > > Livre SQL - col. Référence :
> > > Le site du SQL, pour débutants et pros :
> > > ****************** mailto:
> > >
> >
> >
>
>
Ben non, ton exemple marche car tes prix sont croissants.
Si tu saisies des prix décroissants tu verras que TOP marche et que MAX ne
marche pas:
> A partir du 01 Janvier le prix est de 40 euros
> A partir du 15 Février le prix est de 30 euros
> A partir du 20 Mars le prix est de 20 euros
> A partir du 20 Avril le prix est de 10 euros
Laurent.
"Olivier" wrote in message
news:%
> ???
> Je dois surement mettre mal exprimé.
> Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
fatigué
> :-(
> C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
>
> Ma table TARIFS exprime des prix " à partir d'une date "
>
> Ex:
> A partir du 01 Janvier le prix est de 10 euros
> A partir du 15 Février le prix est de 20 euros
> A partir du 20 Mars le prix est de 30 euros
> A partir du 20 Avril le prix est de 40 euros
>
> Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
> suivantes :
>
> 10 Février , j'obtient bien la valeur 10
> 20 Février , j'obtient bien la valeur 20
> 01 Avril, j'obtient bien la valeur 30
> 25 Avril, j'obtient bien la valeur 40
>
> Non ?
>
> -- SCRIPT SQL ---------------------------------
> USE master
> GO
>
> IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name
> ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
> DROP DATABASE monhotel
> GO
>
> CREATE DATABASE monhotel
> GO
>
> USE monhotel
> GO
>
> create table tarifs
> (
> date_debut DATETIME,
> prix INT
> );
> GO
>
> create table sejours
> (
> date_sejour DATETIME
> );
> GO
>
>
> insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
> insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
> insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
> insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
>
> GO
>
> insert into sejours (date_sejour) VALUES ('10/02/2003') ;
> insert into sejours (date_sejour) VALUES ('20/02/2003') ;
> insert into sejours (date_sejour) VALUES ('01/04/2003') ;
> insert into sejours (date_sejour) VALUES ('25/04/2003') ;
>
> GO
>
>
> -- REQUETE AVEC TOP
> SELECT S.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= S.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours S
>
> GO
>
> -- REQUETE AVEC MAX
> SELECT S.date_sejour, (SELECT MAX(T.prix)
> FROM tarifs T
> WHERE (T.date_debut <= S.date_sejour)) AS Prix
> FROM sejours S
>
> GO
>
>
> -- FIN SCRIPT SQL ----------------------------
>
>
>
> "Laurent Moreau" a écrit dans le
message
> de news:c6t5un$6e3$
> > Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
alors
> > que toi tu recherche le dernier prix avant une date précise:
> >
> > ex:
> > 1 jan: 10?
> > 5 fev: 20 ?
> > 8 mars: 15?
> > 9 avril: 35?
> >
> >
> > Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> > probleme au départ)
> >
> > avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
> antérieur
> > au 1 avril, ce n'est pas bon.
> >
> > La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> > antérieur au 1 avril, soit 15?
> >
> >
> >
> > Laurent.
> >
> >
> >
> >
> >
> > "Olivier" wrote in message
> > news:
> > > Merci
> > >
> > > J'obtiens le même résultat avec ma requête, non ?
> > > SELECT D.date_sejour,
> > > (SELECT MAX(T.prix)
> > > FROM tarifs_chambre T
> > > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > > FROM sejours D
> > >
> > > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> > >
> > > Enfin, ne perds plus de temps avec çà.
> > > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> > Laurent.
> > >
> > > PS : des projets de livre ;-)
> > >
> > > Merci
> > > Olivier
> > >
> > >
> > > "Fred BROUARD" a écrit dans le message
> > > news:
> > > > La solution avec le TOP !
> > > >
> > > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > > FROM tarifs T
> > > > WHERE date_debut <= D.date_sejour
> > > > ORDER BY prix DESC) AS Prix
> > > > FROM sejours D
> > > >
> > > > A +
> > > >
> > > >
> > > > --
> > > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
web
> > > > Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
> > > > Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
> > > > ****************** mailto:
******************
> > > >
> > >
> > >
> >
> >
>
>
Ben non, ton exemple marche car tes prix sont croissants.
Si tu saisies des prix décroissants tu verras que TOP marche et que MAX ne
marche pas:
> A partir du 01 Janvier le prix est de 40 euros
> A partir du 15 Février le prix est de 30 euros
> A partir du 20 Mars le prix est de 20 euros
> A partir du 20 Avril le prix est de 10 euros
Laurent.
"Olivier" <aa@aa.aa> wrote in message
news:%23fRpzppLEHA.3664@TK2MSFTNGP10.phx.gbl...
> ???
> Je dois surement mettre mal exprimé.
> Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
fatigué
> :-(
> C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
>
> Ma table TARIFS exprime des prix " à partir d'une date "
>
> Ex:
> A partir du 01 Janvier le prix est de 10 euros
> A partir du 15 Février le prix est de 20 euros
> A partir du 20 Mars le prix est de 30 euros
> A partir du 20 Avril le prix est de 40 euros
>
> Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
> suivantes :
>
> 10 Février , j'obtient bien la valeur 10
> 20 Février , j'obtient bien la valeur 20
> 01 Avril, j'obtient bien la valeur 30
> 25 Avril, j'obtient bien la valeur 40
>
> Non ?
>
> -- SCRIPT SQL ---------------------------------
> USE master
> GO
>
> IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name
> ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
> DROP DATABASE monhotel
> GO
>
> CREATE DATABASE monhotel
> GO
>
> USE monhotel
> GO
>
> create table tarifs
> (
> date_debut DATETIME,
> prix INT
> );
> GO
>
> create table sejours
> (
> date_sejour DATETIME
> );
> GO
>
>
> insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
> insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
> insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
> insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
>
> GO
>
> insert into sejours (date_sejour) VALUES ('10/02/2003') ;
> insert into sejours (date_sejour) VALUES ('20/02/2003') ;
> insert into sejours (date_sejour) VALUES ('01/04/2003') ;
> insert into sejours (date_sejour) VALUES ('25/04/2003') ;
>
> GO
>
>
> -- REQUETE AVEC TOP
> SELECT S.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= S.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours S
>
> GO
>
> -- REQUETE AVEC MAX
> SELECT S.date_sejour, (SELECT MAX(T.prix)
> FROM tarifs T
> WHERE (T.date_debut <= S.date_sejour)) AS Prix
> FROM sejours S
>
> GO
>
>
> -- FIN SCRIPT SQL ----------------------------
>
>
>
> "Laurent Moreau" <l.moreau@SUPPRIMERCECIsystonic.fr> a écrit dans le
message
> de news:c6t5un$6e3$1@s1.read.news.oleane.net...
> > Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
alors
> > que toi tu recherche le dernier prix avant une date précise:
> >
> > ex:
> > 1 jan: 10?
> > 5 fev: 20 ?
> > 8 mars: 15?
> > 9 avril: 35?
> >
> >
> > Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> > probleme au départ)
> >
> > avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
> antérieur
> > au 1 avril, ce n'est pas bon.
> >
> > La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> > antérieur au 1 avril, soit 15?
> >
> >
> >
> > Laurent.
> >
> >
> >
> >
> >
> > "Olivier" <aa@aa.aa> wrote in message
> > news:uW8pRIpLEHA.3664@TK2MSFTNGP10.phx.gbl...
> > > Merci
> > >
> > > J'obtiens le même résultat avec ma requête, non ?
> > > SELECT D.date_sejour,
> > > (SELECT MAX(T.prix)
> > > FROM tarifs_chambre T
> > > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > > FROM sejours D
> > >
> > > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> > >
> > > Enfin, ne perds plus de temps avec çà.
> > > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> > Laurent.
> > >
> > > PS : des projets de livre ;-)
> > >
> > > Merci
> > > Olivier
> > >
> > >
> > > "Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message
> > > news:OV447mnLEHA.3664@TK2MSFTNGP10.phx.gbl...
> > > > La solution avec le TOP !
> > > >
> > > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > > FROM tarifs T
> > > > WHERE date_debut <= D.date_sejour
> > > > ORDER BY prix DESC) AS Prix
> > > > FROM sejours D
> > > >
> > > > A +
> > > >
> > > >
> > > > --
> > > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
web
> > > > Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
> > > > Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
> > > > ****************** mailto:brouardf@club-internet.fr
******************
> > > >
> > >
> > >
> >
> >
>
>
Ben non, ton exemple marche car tes prix sont croissants.
Si tu saisies des prix décroissants tu verras que TOP marche et que MAX ne
marche pas:
> A partir du 01 Janvier le prix est de 40 euros
> A partir du 15 Février le prix est de 30 euros
> A partir du 20 Mars le prix est de 20 euros
> A partir du 20 Avril le prix est de 10 euros
Laurent.
"Olivier" wrote in message
news:%
> ???
> Je dois surement mettre mal exprimé.
> Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
fatigué
> :-(
> C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
>
> Ma table TARIFS exprime des prix " à partir d'une date "
>
> Ex:
> A partir du 01 Janvier le prix est de 10 euros
> A partir du 15 Février le prix est de 20 euros
> A partir du 20 Mars le prix est de 30 euros
> A partir du 20 Avril le prix est de 40 euros
>
> Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
> suivantes :
>
> 10 Février , j'obtient bien la valeur 10
> 20 Février , j'obtient bien la valeur 20
> 01 Avril, j'obtient bien la valeur 30
> 25 Avril, j'obtient bien la valeur 40
>
> Non ?
>
> -- SCRIPT SQL ---------------------------------
> USE master
> GO
>
> IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name
> ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
> DROP DATABASE monhotel
> GO
>
> CREATE DATABASE monhotel
> GO
>
> USE monhotel
> GO
>
> create table tarifs
> (
> date_debut DATETIME,
> prix INT
> );
> GO
>
> create table sejours
> (
> date_sejour DATETIME
> );
> GO
>
>
> insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
> insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
> insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
> insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
>
> GO
>
> insert into sejours (date_sejour) VALUES ('10/02/2003') ;
> insert into sejours (date_sejour) VALUES ('20/02/2003') ;
> insert into sejours (date_sejour) VALUES ('01/04/2003') ;
> insert into sejours (date_sejour) VALUES ('25/04/2003') ;
>
> GO
>
>
> -- REQUETE AVEC TOP
> SELECT S.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= S.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours S
>
> GO
>
> -- REQUETE AVEC MAX
> SELECT S.date_sejour, (SELECT MAX(T.prix)
> FROM tarifs T
> WHERE (T.date_debut <= S.date_sejour)) AS Prix
> FROM sejours S
>
> GO
>
>
> -- FIN SCRIPT SQL ----------------------------
>
>
>
> "Laurent Moreau" a écrit dans le
message
> de news:c6t5un$6e3$
> > Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
alors
> > que toi tu recherche le dernier prix avant une date précise:
> >
> > ex:
> > 1 jan: 10?
> > 5 fev: 20 ?
> > 8 mars: 15?
> > 9 avril: 35?
> >
> >
> > Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> > probleme au départ)
> >
> > avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
> antérieur
> > au 1 avril, ce n'est pas bon.
> >
> > La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> > antérieur au 1 avril, soit 15?
> >
> >
> >
> > Laurent.
> >
> >
> >
> >
> >
> > "Olivier" wrote in message
> > news:
> > > Merci
> > >
> > > J'obtiens le même résultat avec ma requête, non ?
> > > SELECT D.date_sejour,
> > > (SELECT MAX(T.prix)
> > > FROM tarifs_chambre T
> > > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > > FROM sejours D
> > >
> > > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> > >
> > > Enfin, ne perds plus de temps avec çà.
> > > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> > Laurent.
> > >
> > > PS : des projets de livre ;-)
> > >
> > > Merci
> > > Olivier
> > >
> > >
> > > "Fred BROUARD" a écrit dans le message
> > > news:
> > > > La solution avec le TOP !
> > > >
> > > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > > FROM tarifs T
> > > > WHERE date_debut <= D.date_sejour
> > > > ORDER BY prix DESC) AS Prix
> > > > FROM sejours D
> > > >
> > > > A +
> > > >
> > > >
> > > > --
> > > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
web
> > > > Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
> > > > Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
> > > > ****************** mailto:
******************
> > > >
> > >
> > >
> >
> >
>
>
Ben non, ton exemple marche car tes prix sont croissants.
Si tu saisies des prix décroissants tu verras que TOP marche et que MAX ne
marche pas:
> A partir du 01 Janvier le prix est de 40 euros
> A partir du 15 Février le prix est de 30 euros
> A partir du 20 Mars le prix est de 20 euros
> A partir du 20 Avril le prix est de 10 euros
Laurent.
"Olivier" wrote in message
news:%
> ???
> Je dois surement mettre mal exprimé.
> Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
fatigué
> :-(
> C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
>
> Ma table TARIFS exprime des prix " à partir d'une date "
>
> Ex:
> A partir du 01 Janvier le prix est de 10 euros
> A partir du 15 Février le prix est de 20 euros
> A partir du 20 Mars le prix est de 30 euros
> A partir du 20 Avril le prix est de 40 euros
>
> Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
> suivantes :
>
> 10 Février , j'obtient bien la valeur 10
> 20 Février , j'obtient bien la valeur 20
> 01 Avril, j'obtient bien la valeur 30
> 25 Avril, j'obtient bien la valeur 40
>
> Non ?
>
> -- SCRIPT SQL ---------------------------------
> USE master
> GO
>
> IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name
> ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
> DROP DATABASE monhotel
> GO
>
> CREATE DATABASE monhotel
> GO
>
> USE monhotel
> GO
>
> create table tarifs
> (
> date_debut DATETIME,
> prix INT
> );
> GO
>
> create table sejours
> (
> date_sejour DATETIME
> );
> GO
>
>
> insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
> insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
> insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
> insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
>
> GO
>
> insert into sejours (date_sejour) VALUES ('10/02/2003') ;
> insert into sejours (date_sejour) VALUES ('20/02/2003') ;
> insert into sejours (date_sejour) VALUES ('01/04/2003') ;
> insert into sejours (date_sejour) VALUES ('25/04/2003') ;
>
> GO
>
>
> -- REQUETE AVEC TOP
> SELECT S.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= S.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours S
>
> GO
>
> -- REQUETE AVEC MAX
> SELECT S.date_sejour, (SELECT MAX(T.prix)
> FROM tarifs T
> WHERE (T.date_debut <= S.date_sejour)) AS Prix
> FROM sejours S
>
> GO
>
>
> -- FIN SCRIPT SQL ----------------------------
>
>
>
> "Laurent Moreau" a écrit dans le
message
> de news:c6t5un$6e3$
> > Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
alors
> > que toi tu recherche le dernier prix avant une date précise:
> >
> > ex:
> > 1 jan: 10?
> > 5 fev: 20 ?
> > 8 mars: 15?
> > 9 avril: 35?
> >
> >
> > Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> > probleme au départ)
> >
> > avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
> antérieur
> > au 1 avril, ce n'est pas bon.
> >
> > La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> > antérieur au 1 avril, soit 15?
> >
> >
> >
> > Laurent.
> >
> >
> >
> >
> >
> > "Olivier" wrote in message
> > news:
> > > Merci
> > >
> > > J'obtiens le même résultat avec ma requête, non ?
> > > SELECT D.date_sejour,
> > > (SELECT MAX(T.prix)
> > > FROM tarifs_chambre T
> > > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > > FROM sejours D
> > >
> > > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> > >
> > > Enfin, ne perds plus de temps avec çà.
> > > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> > Laurent.
> > >
> > > PS : des projets de livre ;-)
> > >
> > > Merci
> > > Olivier
> > >
> > >
> > > "Fred BROUARD" a écrit dans le message
> > > news:
> > > > La solution avec le TOP !
> > > >
> > > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > > FROM tarifs T
> > > > WHERE date_debut <= D.date_sejour
> > > > ORDER BY prix DESC) AS Prix
> > > > FROM sejours D
> > > >
> > > > A +
> > > >
> > > >
> > > > --
> > > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
web
> > > > Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
> > > > Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
> > > > ****************** mailto:
******************
> > > >
> > >
> > >
> >
> >
>
>
Ben non, ton exemple marche car tes prix sont croissants.
Si tu saisies des prix décroissants tu verras que TOP marche et que MAX ne
marche pas:
> A partir du 01 Janvier le prix est de 40 euros
> A partir du 15 Février le prix est de 30 euros
> A partir du 20 Mars le prix est de 20 euros
> A partir du 20 Avril le prix est de 10 euros
Laurent.
"Olivier" <aa@aa.aa> wrote in message
news:%23fRpzppLEHA.3664@TK2MSFTNGP10.phx.gbl...
> ???
> Je dois surement mettre mal exprimé.
> Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
fatigué
> :-(
> C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
>
> Ma table TARIFS exprime des prix " à partir d'une date "
>
> Ex:
> A partir du 01 Janvier le prix est de 10 euros
> A partir du 15 Février le prix est de 20 euros
> A partir du 20 Mars le prix est de 30 euros
> A partir du 20 Avril le prix est de 40 euros
>
> Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
> suivantes :
>
> 10 Février , j'obtient bien la valeur 10
> 20 Février , j'obtient bien la valeur 20
> 01 Avril, j'obtient bien la valeur 30
> 25 Avril, j'obtient bien la valeur 40
>
> Non ?
>
> -- SCRIPT SQL ---------------------------------
> USE master
> GO
>
> IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name
> ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
> DROP DATABASE monhotel
> GO
>
> CREATE DATABASE monhotel
> GO
>
> USE monhotel
> GO
>
> create table tarifs
> (
> date_debut DATETIME,
> prix INT
> );
> GO
>
> create table sejours
> (
> date_sejour DATETIME
> );
> GO
>
>
> insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
> insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
> insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
> insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
>
> GO
>
> insert into sejours (date_sejour) VALUES ('10/02/2003') ;
> insert into sejours (date_sejour) VALUES ('20/02/2003') ;
> insert into sejours (date_sejour) VALUES ('01/04/2003') ;
> insert into sejours (date_sejour) VALUES ('25/04/2003') ;
>
> GO
>
>
> -- REQUETE AVEC TOP
> SELECT S.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= S.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours S
>
> GO
>
> -- REQUETE AVEC MAX
> SELECT S.date_sejour, (SELECT MAX(T.prix)
> FROM tarifs T
> WHERE (T.date_debut <= S.date_sejour)) AS Prix
> FROM sejours S
>
> GO
>
>
> -- FIN SCRIPT SQL ----------------------------
>
>
>
> "Laurent Moreau" <l.moreau@SUPPRIMERCECIsystonic.fr> a écrit dans le
message
> de news:c6t5un$6e3$1@s1.read.news.oleane.net...
> > Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
alors
> > que toi tu recherche le dernier prix avant une date précise:
> >
> > ex:
> > 1 jan: 10?
> > 5 fev: 20 ?
> > 8 mars: 15?
> > 9 avril: 35?
> >
> >
> > Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> > probleme au départ)
> >
> > avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
> antérieur
> > au 1 avril, ce n'est pas bon.
> >
> > La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> > antérieur au 1 avril, soit 15?
> >
> >
> >
> > Laurent.
> >
> >
> >
> >
> >
> > "Olivier" <aa@aa.aa> wrote in message
> > news:uW8pRIpLEHA.3664@TK2MSFTNGP10.phx.gbl...
> > > Merci
> > >
> > > J'obtiens le même résultat avec ma requête, non ?
> > > SELECT D.date_sejour,
> > > (SELECT MAX(T.prix)
> > > FROM tarifs_chambre T
> > > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > > FROM sejours D
> > >
> > > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> > >
> > > Enfin, ne perds plus de temps avec çà.
> > > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> > Laurent.
> > >
> > > PS : des projets de livre ;-)
> > >
> > > Merci
> > > Olivier
> > >
> > >
> > > "Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message
> > > news:OV447mnLEHA.3664@TK2MSFTNGP10.phx.gbl...
> > > > La solution avec le TOP !
> > > >
> > > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > > FROM tarifs T
> > > > WHERE date_debut <= D.date_sejour
> > > > ORDER BY prix DESC) AS Prix
> > > > FROM sejours D
> > > >
> > > > A +
> > > >
> > > >
> > > > --
> > > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
web
> > > > Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
> > > > Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
> > > > ****************** mailto:brouardf@club-internet.fr
******************
> > > >
> > >
> > >
> >
> >
>
>
Ben non, ton exemple marche car tes prix sont croissants.
Si tu saisies des prix décroissants tu verras que TOP marche et que MAX ne
marche pas:
> A partir du 01 Janvier le prix est de 40 euros
> A partir du 15 Février le prix est de 30 euros
> A partir du 20 Mars le prix est de 20 euros
> A partir du 20 Avril le prix est de 10 euros
Laurent.
"Olivier" wrote in message
news:%
> ???
> Je dois surement mettre mal exprimé.
> Copie le Script SQL plus-bàs et regarde ? Ou alors je suis vraiment
fatigué
> :-(
> C'est vrai que par ecrit c'est toujours dur d'expliquer un problème.
>
> Ma table TARIFS exprime des prix " à partir d'une date "
>
> Ex:
> A partir du 01 Janvier le prix est de 10 euros
> A partir du 15 Février le prix est de 20 euros
> A partir du 20 Mars le prix est de 30 euros
> A partir du 20 Avril le prix est de 40 euros
>
> Donc, quelque soit la requete que j'utilise (MAX ou TOP) pour les dates
> suivantes :
>
> 10 Février , j'obtient bien la valeur 10
> 20 Février , j'obtient bien la valeur 20
> 01 Avril, j'obtient bien la valeur 30
> 25 Avril, j'obtient bien la valeur 40
>
> Non ?
>
> -- SCRIPT SQL ---------------------------------
> USE master
> GO
>
> IF EXISTS (SELECT * FROM information_schema.schemata WHERE catalog_name
> ALTER DATABASE monhotel SET SINGLE_USER WITH ROLLBACK IMMEDIATE
> DROP DATABASE monhotel
> GO
>
> CREATE DATABASE monhotel
> GO
>
> USE monhotel
> GO
>
> create table tarifs
> (
> date_debut DATETIME,
> prix INT
> );
> GO
>
> create table sejours
> (
> date_sejour DATETIME
> );
> GO
>
>
> insert into tarifs (date_debut, prix) VALUES ('01/01/2003',10);
> insert into tarifs (date_debut, prix) VALUES ('15/02/2003',20);
> insert into tarifs (date_debut, prix) VALUES ('20/03/2003',30);
> insert into tarifs (date_debut, prix) VALUES ('20/04/2003',40);
>
> GO
>
> insert into sejours (date_sejour) VALUES ('10/02/2003') ;
> insert into sejours (date_sejour) VALUES ('20/02/2003') ;
> insert into sejours (date_sejour) VALUES ('01/04/2003') ;
> insert into sejours (date_sejour) VALUES ('25/04/2003') ;
>
> GO
>
>
> -- REQUETE AVEC TOP
> SELECT S.date_sejour,(SELECT TOP 1 prix
> FROM tarifs T
> WHERE date_debut <= S.date_sejour
> ORDER BY prix DESC) AS Prix
> FROM sejours S
>
> GO
>
> -- REQUETE AVEC MAX
> SELECT S.date_sejour, (SELECT MAX(T.prix)
> FROM tarifs T
> WHERE (T.date_debut <= S.date_sejour)) AS Prix
> FROM sejours S
>
> GO
>
>
> -- FIN SCRIPT SQL ----------------------------
>
>
>
> "Laurent Moreau" a écrit dans le
message
> de news:c6t5un$6e3$
> > Avec Max(T.prix) ce n'est pas bon: il renvoie le prix le plus élevé,
alors
> > que toi tu recherche le dernier prix avant une date précise:
> >
> > ex:
> > 1 jan: 10?
> > 5 fev: 20 ?
> > 8 mars: 15?
> > 9 avril: 35?
> >
> >
> > Tu cherches a obtenir le prix le 1 avril (si j'ai bien compris ton
> > probleme au départ)
> >
> > avec max(prix) tu vas obtenir: 20? car tu cherches dans les prix
> antérieur
> > au 1 avril, ce n'est pas bon.
> >
> > La requete de Fred (avec le TOP 1) va bien te chercher le dernier prix
> > antérieur au 1 avril, soit 15?
> >
> >
> >
> > Laurent.
> >
> >
> >
> >
> >
> > "Olivier" wrote in message
> > news:
> > > Merci
> > >
> > > J'obtiens le même résultat avec ma requête, non ?
> > > SELECT D.date_sejour,
> > > (SELECT MAX(T.prix)
> > > FROM tarifs_chambre T
> > > WHERE (T.date_debut <= D.date_sejour)) AS Prix
> > > FROM sejours D
> > >
> > > Le TOP 1 avec ton ORDER BY prix DESC revient à faire un MAX ?
> > >
> > > Enfin, ne perds plus de temps avec çà.
> > > Ca marche, c'est le plus important, et je t'en remercie, ainsi que
> > Laurent.
> > >
> > > PS : des projets de livre ;-)
> > >
> > > Merci
> > > Olivier
> > >
> > >
> > > "Fred BROUARD" a écrit dans le message
> > > news:
> > > > La solution avec le TOP !
> > > >
> > > > SELECT D.date_sejour,(SELECT TOP 1 prix
> > > > FROM tarifs T
> > > > WHERE date_debut <= D.date_sejour
> > > > ORDER BY prix DESC) AS Prix
> > > > FROM sejours D
> > > >
> > > > A +
> > > >
> > > >
> > > > --
> > > > Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi /
web
> > > > Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
> > > > Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
> > > > ****************** mailto:
******************
> > > >
> > >
> > >
> >
> >
>
>