Вывести заполненность классов, в чем ошибка?

Ссылка скопирована
1 ответ

Есть две таблицы:
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

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Для того чтобы определить заполненность классов в 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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно