powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Преобразование группового запроса для COUNT
13 сообщений из 13, страница 1 из 1
Преобразование группового запроса для COUNT
    #38918999
unnomen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал такой запрос, но он выводит только тех, где classes.id = pupils.id_class
Код: sql
1.
2.
3.
SELECT classes.id, classes.title, COUNT(pupils.id) FROM pupils, classes
WHERE classes.id = pupils.id_class
GROUP BY pupils.id_class;

Нужно включить в запрос ещё список, где classes.id <> pupils.id_class, добавив в этом случае знчение "0".
Возможно ли это?
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919001
unnomen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
unnomenдобавив в этом случае знчение "0"
COUNT = 0
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919011
unnomen,

почитать про внешние соединения (OUTER [LEFT | RIGHT | FULL] JOIN)
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919187
unnomen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эхпочитать про внешние соединения (OUTER [LEFT | RIGHT | FULL] JOIN)

Прочитал, но что-то вообще не могу понять как работает это.
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919188
unnomen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
unnomenДобрый Э - Эхпочитать про внешние соединения (OUTER [LEFT | RIGHT | FULL] JOIN)
Прочитал, но что-то вообще не могу понять как работает это.
У меня хорошо получается на примерах понимать, где подобные случаи попадаются.
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919390
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unnomen , лучше покажите пару строк исходных данных и желаемые для них выходные.
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919416
unnomen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina unnomen , лучше покажите пару строк исходных данных и желаемые для них выходные.Вот данные (часть)

Таблица classes:
Поле id:
1
2
3
Поле title:

8


Таблица pupils:
Поле id:
1
2
3
4
Поле id_class:
1
2
2
2
Получается при вышеприведённом запросе выводятся такие строки:
id = 1 , title = COUNT = 1
id = 2 , title = 8 COUNT = 3

Нужно к этому списку добавить 9А, и чтобы COUNT был либо NULL либо 0.
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919425
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык это... LEFT JOIN.
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919427
unnomen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Можно пожалуйста пример какой нибудь? Для новичка чтобы было понятно. Приближённый к моему примеру.

Четвёртый день пишу приложение, голова кипит...
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919450
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
SELECT classes.id, classes.title, COUNT(pupils.id) 
FROM classes
LEFT JOIN pupils 
ON classes.id = pupils.id_class
GROUP BY classes.id;
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919458
unnomen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Код: sql
1.
2.
3.
4.
5.
SELECT classes.id, classes.title, COUNT(pupils.id) 
FROM classes
LEFT JOIN pupils 
ON classes.id = pupils.id_class
GROUP BY classes.id;

Опять же, не выдаёт класс, где нет учеников. Получается тот же запрос, только в другой форме.
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919484
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unnomenОпять же, не выдаёт класс, где нет учеников.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
mysql> create table classes (id int, title text);
Query OK, 0 rows affected (0.19 sec)

mysql> insert into classes (id,title)
    -> select 1,'5б' union
    -> select 2,'8' union
    -> select 3,'9А';
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> create table pupils (id int, id_class int);
Query OK, 0 rows affected (0.20 sec)

mysql> insert into pupils (id,id_class)
    -> select 1,1 union
    -> select 2,2 union
    -> select 3,2 union
    -> select 4,2;
Query OK, 4 rows affected (0.03 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from classes; select * from pupils;
+------+-------+
| id   | title |
+------+-------+
|    1 | 5б    |
|    2 | 8     |
|    3 | 9А    |
+------+-------+
3 rows in set (0.01 sec)

+------+----------+
| id   | id_class |
+------+----------+
|    1 |        1 |
|    2 |        2 |
|    3 |        2 |
|    4 |        2 |
+------+----------+
4 rows in set (0.00 sec)

mysql> SELECT classes.id, classes.title, COUNT(pupils.id)
    -> FROM classes
    -> LEFT JOIN pupils
    -> ON classes.id = pupils.id_class
    -> GROUP BY classes.id;
+------+-------+------------------+
| id   | title | COUNT(pupils.id) |
+------+-------+------------------+
|    1 | 5б    |                1 |
|    2 | 8     |                3 |
|    3 | 9А    |                0 |
+------+-------+------------------+
3 rows in set (0.11 sec)


Так что совет только один - вынуть руки наружу.
...
Рейтинг: 0 / 0
Преобразование группового запроса для COUNT
    #38919494
unnomen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaТак что совет только один - вынуть руки наружу.
Виноват. Я забыл, что удалил пустой класс))
Спасибо большое за помощь. Буду вникать в JOIN.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Преобразование группового запроса для COUNT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]