2016-11-02 3 views
-2

Я застрял в создании подзапроса в моем запросе (MySQL).Проблема запроса/подзапроса в MySQL

Имя таблицы: log2016

Запись данных началась в октябре и таблица выглядит следующим образом:

| Date    | Temp | Hum | Cond   | 
| 2016-10-01 14:03:40 | 13.6 | 60 | cloudy  | 
| 2016-10-15 00:07:37 | 10.1 | 81 | partly cloudy | 
    ... 
| 2016-11-02 13:47:22 | 12.8 | 74 | partly cloudy | 
    ... 

Прежде всего, я хочу, чтобы выбрать все данные из 2016-10-01 00:00:00 до 2016-11-01 00:00:00.

ИНЕКЕ:

WHERE `Date` < '2016-11-01 00:00:00' 

Во-вторых, я хочу, чтобы выбрать строку «Конд» следующим образом:

$query = "SELECT `Cond`, COUNT(`Cond`) AS `Anz` FROM `log2016` GROUP BY `Cond`"; 

Этот запрос работает отлично, но если я ставлю ИНЕКЕ в этом запросе, как например

$query = "SELECT `Cond`, COUNT(`Cond`) AS `Anz` FROM `log2016` WHERE `Date` < '2016-11-01 00:00:00' GROUP BY `Cond`"; 

не будет работать.

Я много гугл и также пробовал разные вещи, чтобы решить мою проблему, но ничего не получилось.

EDIT:

Вот весь код:

<?php 

include_once("../../mysql/Wetterdatenlogger.php"); 
include_once("Wetter_2016.php"); 

    if (isset ($_GET['Periode']) && $_GET['Periode'] == 'ALL ') 
     {   
      $query = "SELECT `Wetter`, COUNT(`Wetter`) AS `Anzahl` FROM `log2016` GROUP BY `Wetter`";     
      $result = mysqli_query($db_link_Wetter, $query); 

      while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
       { 
        $Wetter1 = $row['Wetter']; 
        $Wetter = "'".$Wetter1."'"; 
        $Anz = $row['Anzahl']; 

        $data[] = "[$Wetter, $Anz]"; 
       } 
     } 

    if (isset ($_GET['Periode']) && $_GET['Periode'] == 'OKT.') 
     {  
      $query = "SELECT `Wetter`, COUNT(*) AS `Anzahl` FROM 
          (
          SELECT * FROM `log2016` WHERE `Datum/Zeit` < '2016-11-01 00:00:00' 
         ) 
         GROUP BY `Wetter`" ; 

      $result = mysqli_query($db_link_RPI_1, $query); 

      while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
       { 
        $Wetter1 = $row['Wetter']; 
        $Wetter = "'".$Wetter1."'"; 
        $Anz = $row['Anzahl']; 

        $data[] = "[$Wetter, $Anz]"; 
       } 
     } 
?> 

JavaScript:

<script type="text/javascript"> 
    $(function() { 
     $('#container8').highcharts({ 
      chart: { 
       type: 'pie', 
       options3d: { 
        enabled: true, 
        alpha: 45, 
        beta: 0 
       } 
      }, 
      title: { 
       text: 'Wetter 2016' 
      }, 
      tooltip: { 
       pointFormat: '{series.name}: <b>{point.percentage:.2f}%</b>' 
      }, 
      plotOptions: { 
       pie: { 
        allowPointSelect: true, 
        cursor: 'pointer', 
        depth: 35, 
        dataLabels: { 
         enabled: true, 
         format: '{point.name}' 
        } 
       } 
      }, 
      series: [{ 
       type: 'pie', 
       name: 'Wetter 2016', 
       data: [<?php echo join($data, ',') ?>] 
      }] 
     }); 
    }); 
    </script> 

HTML:

<form method="GET" id="choice" class="Wetter" action="Wetter_get_data_2016.php"> 
      <br> 
      <input type="submit" name="Periode" value="OKT." class="input_Wetter"> 
      <input type="submit" name="Periode" value="NOV." class="input_Wetter"> 
      <input type="submit" name="Periode" value="DEZ." class="input_Wetter"> 
      <input type="submit" name="Periode" value="ALL " class="input_Wetter"> 
     </form> 

     <script src="https://code.highcharts.com/highcharts.js"></script> 
     <script src="https://code.highcharts.com/highcharts-3d.js"></script> 
     <script src="https://code.highcharts.com/modules/exporting.js"></script> 

     <div id="container8" style="height: 400px"></div> 

Выход для «ALL»:

chart

Выход для «ОКТ» - ничего не отображается

+1

Пожалуйста, покажите желаемый результат. –

+1

какое средство не работает? Ошибка? Неверный результат? –

+1

Что вы подразумеваете под идентификатором, не работают? Вы получаете неправильные данные? Если это так, покажите нам пример данных с текущим выходом и желаемым выходом. Вы получаете какое-либо исключение? Если это так, покажите нам исключение. Ты...? – Rumpelstinsk

ответ

1

Я хотел бы предложить, чтобы сделать внутренний выбор с фильтрацией даты, а внешняя выбрать с группировкой, что-то вроде:

SELECT Cond, COUNT(*) AS Anz FROM 
    (
    SELECT * FROM log2016 WHERE Date < '2016-11-01 00:00:00' 
) 
GROUP BY Cond ; 
+0

зачем вам это нужно? –

+0

Вы имеете в виду разбиение его на внутренний/внешний выбор, не так ли? Нет особой причины, кроме как проверить правильность базовой концепции запроса. Если это обеспечивает правильный и желаемый результат, запрос может быть переформулирован в один оператор. Видеть? Имея запрос таким образом, вы можете легко протестировать внутренний, а затем полный запрос (иногда я использую этот метод для отладки моего собственного кода). – FDavidov

+0

Спасибо за вашу помощь, но, к сожалению, это не сработало. – Guapa

0

(Опубликовано от имени О.П.).

Проблема решена - в моем коде была ошибка «копия &».

Запрос сейчас работает.

Спасибо всем помощникам!

Смежные вопросы