Salve a tutti,
ho un problema su una query che dovrebbe calcolarmi il totale del prezzo da una tabella (prezzi) che presenta più varianti di prezzo in riferimento a range di date diverse.
La tabella (prezzi) ha i seguenti campi:
id
price
Start_date
End_date
Es. Seleziono il range di date per la quale la query dovrebbe calcolarmi il totale:
DATE SELEZIONATE Dal 01/08/2018 al 31/08/2018
I prezzi variano per periodi dal 1 al 31 agosto.
dal 01/08/2018 al 08/08/2018 il price è di euro 90,00 x notte Tot. 7 notti x 90 = 630
dal 09/08/2018 al 15/08/2018 il price è di euro 120,00 x notte Tot 6 notti x 120 = 720
dal 16/08/2018 al 31/08/2018 il price è di euro 80,00 x notte Tot 16 notti x 80 = 1280
Il totale dovrebbe essere : 2630 ma non funziona...
ho fatto in questo modo:
$queryprezzo="SELECT SUM( price * ( 1 + DATEDIFF( LEAST( End_date, '".$dataout."' - INTERVAL 1 DAY ) , GREATEST( Start_date, '".$datain."' ) ) ) ) AS Total FROM prezzi WHERE roomid='".$id." 'AND ('".$dataout."' - INTERVAL 1 DAY BETWEEN Start_date AND End_date OR '".$datain."' BETWEEN Start_date AND End_date ) AND prezzo_adulti=".$adulti." AND prezzo_bambini=".$bambini." ";
Cosa sbaglio? Grazie a chi vorrà illuminarmi
Spero di essere stato chiaro nell'illustrazione.
ho un problema su una query che dovrebbe calcolarmi il totale del prezzo da una tabella (prezzi) che presenta più varianti di prezzo in riferimento a range di date diverse.
La tabella (prezzi) ha i seguenti campi:
id
price
Start_date
End_date
Es. Seleziono il range di date per la quale la query dovrebbe calcolarmi il totale:
DATE SELEZIONATE Dal 01/08/2018 al 31/08/2018
I prezzi variano per periodi dal 1 al 31 agosto.
dal 01/08/2018 al 08/08/2018 il price è di euro 90,00 x notte Tot. 7 notti x 90 = 630
dal 09/08/2018 al 15/08/2018 il price è di euro 120,00 x notte Tot 6 notti x 120 = 720
dal 16/08/2018 al 31/08/2018 il price è di euro 80,00 x notte Tot 16 notti x 80 = 1280
Il totale dovrebbe essere : 2630 ma non funziona...
ho fatto in questo modo:
$queryprezzo="SELECT SUM( price * ( 1 + DATEDIFF( LEAST( End_date, '".$dataout."' - INTERVAL 1 DAY ) , GREATEST( Start_date, '".$datain."' ) ) ) ) AS Total FROM prezzi WHERE roomid='".$id." 'AND ('".$dataout."' - INTERVAL 1 DAY BETWEEN Start_date AND End_date OR '".$datain."' BETWEEN Start_date AND End_date ) AND prezzo_adulti=".$adulti." AND prezzo_bambini=".$bambini." ";
Cosa sbaglio? Grazie a chi vorrà illuminarmi
Spero di essere stato chiaro nell'illustrazione.