SQL-Querys zusammenfassen?

Thema wurde von Manni_HB, 9. Oktober 2013 erstellt.

  1. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Folgende zwei Querys ...
    Code:
    //HEUTE
    $orders_today_query = xtDBquery(" SELECT sum(ot.value) FROM ".TABLE_ORDERS." o, ".TABLE_ORDERS_TOTAL." ot WHERE o.date_purchased LIKE '".date("Y-m-d")."%' AND ot.orders_id = o.orders_id AND ot.class = 'ot_total' ");
    $orders_today = xtc_db_fetch_array($orders_today_query);
    
    //GESTERN    
    $orders_yesterday_query = xtDBquery(" SELECT sum(ot.value) FROM ".TABLE_ORDERS." o, ".TABLE_ORDERS_TOTAL." ot WHERE o.date_purchased LIKE '".date("Y-m-d",time() - 86400)."%' AND ot.orders_id = o.orders_id AND ot.class = 'ot_total' ");
    $orders_yesterday = xtc_db_fetch_array($orders_yesterday_query);
    
    ... lesen ein und diese selben Summen ein ... nur für verschiedene Zeiträume.
    Wenn man dies auf mehr Summen und mehr Zeiträume ausdehnt, vermehren sich Querys m.E. ins Astronomische.

    SQL-Dummy-Spezialfrage:
    Kann man solche Abfragen nicht zusammenfassen?
    Wenn "JA" - wie? :rolleyes:
     
  2. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    14. Juli 2011
    Beiträge:
    1.004
    Danke erhalten:
    74
    Danke vergeben:
    132
    Was meinst du mit zusammenfassen?
     
  3. Manni_HB
    Manni_HB G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Ja .. vielleicht auch unpräzise gefragt!

    Bezogen auf das Beipiel: Statt zwei DB-Anfragen zusammenfassen zu einer Abfrage.
     
  4. Avenger
    Avenger G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Das könnte funktionieren, um z.B. den Umsatz im September 2013 zu ermitteln (ungetestet):

    PHP:
    <?php
    $today
    =time();
    $day_delta=86400;
    $end_date='2013-09-01';
    $end_date='2013-10-01';
    $start_date=strtotime($start_date);
    $end_date=strtotime($end_date)-$day_delta;
    $days_between ceil(abs($end_date $start_date) / $day_delta);

    $dates='';
    for (
    $i=1;$i<=$days_between;$i++)
    {
      if (
    $dates)
      {
        
    $dates.=',';
      }
      
    $dates.="'".date("Y-m-d",$today $day_delta*($i-1))."'";
    }

    $sql=
    "SELECT 
      sum(ot.value) as total,
      o.date_purchased 
    FROM 
      "
    .TABLE_ORDERS." o, 
      "
    .TABLE_ORDERS_TOTAL." ot 
    WHERE 
      DATE(o.date_purchased) IN (
    $dates) AND 
      ot.orders_id = o.orders_id AND 
      ot.class = 'ot_total'"
    ;

    $orders_query xtDBquery($sql);
    $total_value=0;
    while (
    $orders_total xtc_db_fetch_array($orders_query))
    {
      
    $date=$orders_total['date_purchased'];
      
    $date=strtotime($date);
      
    $date=date('d.m.Y',$date);
      
    $value=((float)$orders_total['total'];
      
    $total_value+=$value;
      echo 
    "Umsatz vom $date: ".$value.'<br>';
    }  
    setlocale (LC_TIME"de_DE");
    echo 
    "Gesamt-Umsatz im ".strftime('%B %Y',$date).": ".$total_value.'<br>';
    ?>