Вывести заполненность классов, в чем ошибка?
Есть две таблицы:
Student_in_class имеет поля:
--id - номер записи
--class - идентификатор класса
--student - учащийся
Class имеет поля:
--id - идентификатор класса
--name - имя класса
Необходимо вывести заполненность классов в порядке убывания
Поля в результирующей таблице выбрать: name, count
Я написал такой запрос, который, вроде, показывает правильные данные, однако такое решение неверно:
SELECT name,
(SELECT COUNT(Class.name=Student_in_class.class) FROM Student_in_class
WHERE (Class.id = Student_in_class.class)) AS count
FROM Class ORDER BY count DESC
Подскажите, что исправить
Дополнительно:
Ответы:
SELECT `name`, COUNT(`Student_in_class`.*) AS `count` LEFT JOIN `Student_in_class` ON `Student_in_class`.`class` = `Class`.`id` FROM `Class` GROUP BY `Class`.`id` ORDER BY `count` DESC |
SELECT `name`, COUNT(`Student_in_class`.*) AS `count` LEFT JOIN `Student_in_class` ON `Student_in_class`.`class` = `Class`.`id` FROM `Class` GROUP BY `Class`.`id` ORDER BY `count` DESC
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы определить заполненность классов в PHP, можно использовать функцию get_class_vars(). Эта функция возвращает массив, содержащий все свойства класса и их значения. Таким образом, мы можем определить, какие свойства класса заполнены, а какие нет.
Пример кода:
class MyClass {public $var1;
public $var2 = 'value';
}
$obj = new MyClass();
$vars = get_class_vars(get_class($obj));
foreach ($vars as $var => $value) {
if (isset($obj->$var)) {
echo "$var is set