2010-06-24 5 views
1

J'aimerais connaître une solution qui peut m'aider à générer une requête MySQL pour extraire des données comme je le veux d'une seule table de base de données.Comment résoudre un problème de filtre anticipé, en utilisant la requête MySQL

Table name: Rates 
Columns: id, date, weekday, costA, costB, costC, sellA, sellB, sellC 
SAMPLE TABLE DATA 
================= 

id | date | weekday | costA | costB | costC | sellA | sellB | sellC 
---------------------------------------------------------------------- 
01 2010/6/1  TUE  120  135  140  150  165 180 
02 2010/6/2  WED  120  135  140  150  165 180 
03 2010/6/3  THU  120  135  140  150  165 180 
04 2010/6/4  FRI  120  135  140  150  165 180 
05 2010/6/5  SAT  120  135  140  150  165 180 
06 2010/6/6  SUN  120  135  140  150  165 180 
07 2010/6/7  MON  120  135  140  150  165 180 
... 
16 2010/6/16 WED  150  140  140  200  220 230 
17 2010/6/17 THU  150  140  140  200  220 230 
18 2010/6/18 FRI  150  140  140  200  220 230 
19 2010/6/19 SAT  150  140  140  200  220 230 
20 2010/6/20 SUN  150  140  140  200  220 230 
21 2010/6/21 MON  150  140  140  200  220 230 
22 2010/6/22 TUE  150  140  140  200  220 230 

La requête que je veux faire avec ce tableau est que, je veux obtenir la date de début de chaque coût et vendre la colonne et la dernière date du prix a changé. Ce que j'ai réussi à le faire avec la requête MYSQL suivante:

SELECT * FROM rates ID IN(SELECT MIN(ID) FROM `rates` GROUP BY costA,costB,costC,sellA,sellB,sellC) OR ID IN(SELECT MAX(ID) FROM `rates` GROUP BY costA,costB,costC,sellA,sellB,sellC) 

Comment jamais le problème, je dois aborder est, si dans le cas, par exemple, tous les mercredis et tous les vendredis a deux prix différent de 2010/06/01 au 2010/06/16. Alors, comment puis-je générer une requête qui peut me donner un résumé total par semaine comme expliqué ci-dessous.

id | date | weekday | costA | costB | costC | sellA | sellB | sellC 
---------------------------------------------------------------------- 
01 2010/6/1  TUE  120  135  140  150  165 180 
02 2010/6/2  WED  100  100  100  110  120 130 
03 2010/6/3  THU  120  135  140  150  165 180 
04 2010/6/4  FRI  140  150  160  150  175 180 
05 2010/6/5  SAT  120  135  140  150  165 180 
06 2010/6/6  SUN  120  135  140  150  165 180 
07 2010/6/7  MON  120  135  140  150  165 180 
... 
16 2010/6/16 WED  100  100  100  110  120 130 
17 2010/6/17 THU  150  140  140  200  220 230 
18 2010/6/18 FRI  150  140  140  200  220 230 
19 2010/6/19 SAT  150  140  140  200  220 230 
20 2010/6/20 SUN  150  140  140  200  220 230 
21 2010/6/21 MON  150  140  140  200  220 230 
22 2010/6/22 TUE  150  140  140  200  220 230 

À partir du tableau ci-dessus, le rapport que je dois générer doit ressembler à celui ci-dessous.

id | date | weekday | costA | costB | costC | sellA | sellB | sellC 
---------------------------------------------------------------------- 
01 2010/6/1  TUE  120  135  140  150  165 180 
02 2010/6/2  WED  100  100  100  110  120 130 
03 2010/6/3  THU  120  135  140  150  165 180 
04 2010/6/4  FRI  140  150  160  150  175 180 
05 2010/6/5  SAT  120  135  140  150  165 180 
15 2010/6/15 TUE  120  135  140  150  165 180 
16 2010/6/16 WED  100  100  100  110  120 130 
17 2010/6/17 THU  150  140  140  200  220 230 
22 2010/6/22 TUE  150  140  140  200  220 230 

Lorsqu'il est lu à partir du tableau ci-dessus 2010/06/01 aux taux d'2010/06/16 sont:

WEEKDAY| costA | costB | costC | sellA | sellB | sellC 
    SAT  120  135  140  150  165 180 
    SUN  120  135  140  150  165 180 
    MON  120  135  140  150  165 180 
    TUE  120  135  140  150  165 180 
    WED  100  100  100  110  120 130 
    THU  120  135  140  150  165 180 
    FRI  140  150  160  150  175 180 

et de 2010/06/17 à 2010/06/22

WEEKDAY| costA | costB | costC | sellA | sellB | sellC 
    SAT  150  140  140  200  220 230 
    SUN  150  140  140  200  220 230 
    MON  150  140  140  200  220 230 
    TUE  150  140  140  200  220 230 
    WED  150  140  140  200  220 230 
    THU  150  140  140  200  220 230 
    FRI  150  140  140  200  220 230 

J'espère qu'il y aura une solution pour résoudre ce problème. En bref, ce que j'essaie de faire ici est de générer un tableau périodique des taux, où il indiquera les détails des coûts/prix de vente basés sur les jours de la semaine et groupés en périodes dynamiques indiquant les dates de début et de fin de chaque semaine similaire.

+0

'une requête qui peut me donner un résumé total par semaine'' - Je ne vois pas comment votre exemple de rapport est un résumé par semaine. Envie d'expliquer plus loin? –

+0

Si vous regardez les deux tableaux du bas, avec les prix pour chaque semaine dans une période de date (les périodes de date dépend de chaque changement de prix sur une date). le résultat que je veux sortir d'une requête devrait être comme les deux tables du bas. Simplement pour dire, je veux obtenir un résultat de la première table qui peut montrer des prix basés sur les jours de la semaine et leur période de date applicable. quelque chose comme un tableau des tarifs produit basé sur les prix quotidiens saisis. J'espère que vous avez eu mon idée claire. Je peux expliquer plus si vous avez besoin. merci Jonas. – Raf

Répondre

0

Est-ce que c'est ce dont vous avez besoin?

select weekday,costA,costB,costC,sellA,sellB,sellC, min(date) from_dt, max(date) to_dt 
from rates 
group by weekday,costA,costB,costC,sellA,sellB,sellC 
Questions connexes