Несколько запросов в одной таблице - MySQL

Узнай цену своей работы

Формулировка задачи:

Как вывести несколько запросов в таблицу, при том что условие везде разное, с группировкой.
Листинг программы
  1. $sql = $db->query("SELECT propiska_ter, COUNT(*) AS count FROM nabor_2015 GROUP BY propiska_ter");
  2. $sql2 = $db->query("SELECT propiska_ter, COUNT(*) AS count2 FROM nabor_2015 WHERE forma='Очная' GROUP BY propiska_ter");
  3.  
  4. echo '<table>';
  5. echo '<tr>';
  6. echo '<th class="oplata2">Кол-во студентов</th>';
  7. echo '<th class="oplata2">Очная форма</th>';
  8. echo '</tr>';
  9.  
  10. while($result = $sql->fetch_assoc()) {
  11. echo '<tr>';
  12. echo '<td class="fas"><a href="index.php?options=edit&id='.$result['propiska_ter'].'">'.$result['count'].'</a></td>';
  13. echo '<td class="fas"><a href="index.php?options=edit&id='.$result['propiska_ter'].'">'.$result['count2'].'</a></td>';
  14. echo '</tr>';
  15. }
  16. echo '</table>';

Решение задачи: «Несколько запросов в одной таблице»

textual
Листинг программы
  1. SELECT propiska_ter, t.count_1, f.count_2
  2. FROM (SELECT propiska_ter AS ter, COUNT(*) AS count_1 FROM nabor_2015 GROUP BY propiska_ter) t
  3. LEFT JOIN (SELECT propiska_ter AS ter, COUNT(*) AS count_2 FROM nabor_2015 WHERE forma = 'Очная' GROUP BY propiska_ter) f
  4. ON t.ter = f.ter

Объяснение кода листинга программы

В этом коде происходит объединение (JOIN) двух предварительно подсчитанных таблиц, используя оператор LEFT JOIN. Первая таблица (t) содержит количество записей для каждого propiska_ter в таблице nabor_2015. Вторая таблица (f) содержит количество записей для каждого propiska_ter в таблице nabor_2015, где форма обучения 'Очная'. Затем результаты объединяются по полю propiska_ter. В итоге получается список propiska_ter, их общее количество и количество для формы обучения 'Очная'.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут