Несколько запросов в одной таблице - MySQL
Формулировка задачи:
Как вывести несколько запросов в таблицу, при том что условие везде разное, с группировкой.
Листинг программы
- $sql = $db->query("SELECT propiska_ter, COUNT(*) AS count FROM nabor_2015 GROUP BY propiska_ter");
- $sql2 = $db->query("SELECT propiska_ter, COUNT(*) AS count2 FROM nabor_2015 WHERE forma='Очная' GROUP BY propiska_ter");
- echo '<table>';
- echo '<tr>';
- echo '<th class="oplata2">Кол-во студентов</th>';
- echo '<th class="oplata2">Очная форма</th>';
- echo '</tr>';
- while($result = $sql->fetch_assoc()) {
- echo '<tr>';
- echo '<td class="fas"><a href="index.php?options=edit&id='.$result['propiska_ter'].'">'.$result['count'].'</a></td>';
- echo '<td class="fas"><a href="index.php?options=edit&id='.$result['propiska_ter'].'">'.$result['count2'].'</a></td>';
- echo '</tr>';
- }
- echo '</table>';
Решение задачи: «Несколько запросов в одной таблице»
textual
Листинг программы
- SELECT propiska_ter, t.count_1, f.count_2
- FROM (SELECT propiska_ter AS ter, COUNT(*) AS count_1 FROM nabor_2015 GROUP BY propiska_ter) t
- LEFT JOIN (SELECT propiska_ter AS ter, COUNT(*) AS count_2 FROM nabor_2015 WHERE forma = 'Очная' GROUP BY propiska_ter) f
- ON t.ter = f.ter
Объяснение кода листинга программы
В этом коде происходит объединение (JOIN) двух предварительно подсчитанных таблиц, используя оператор LEFT JOIN. Первая таблица (t) содержит количество записей для каждого propiska_ter в таблице nabor_2015. Вторая таблица (f) содержит количество записей для каждого propiska_ter в таблице nabor_2015, где форма обучения 'Очная'. Затем результаты объединяются по полю propiska_ter. В итоге получается список propiska_ter, их общее количество и количество для формы обучения 'Очная'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д