Несколько запросов в одной таблице - 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, их общее количество и количество для формы обучения 'Очная'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д