Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Преобразование группового запроса для COUNT / 13 сообщений из 13, страница 1 из 1
27.03.2015, 13:39:35
    #38918999
unnomen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
Сделал такой запрос, но он выводит только тех, где 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
27.03.2015, 13:40:36
    #38919001
unnomen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
unnomenдобавив в этом случае знчение "0"
COUNT = 0
...
Рейтинг: 0 / 0
27.03.2015, 13:43:22
    #38919011
Преобразование группового запроса для COUNT
unnomen,

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

Прочитал, но что-то вообще не могу понять как работает это.
...
Рейтинг: 0 / 0
27.03.2015, 15:12:36
    #38919188
unnomen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
unnomenДобрый Э - Эхпочитать про внешние соединения (OUTER [LEFT | RIGHT | FULL] JOIN)
Прочитал, но что-то вообще не могу понять как работает это.
У меня хорошо получается на примерах понимать, где подобные случаи попадаются.
...
Рейтинг: 0 / 0
27.03.2015, 17:36:01
    #38919390
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
unnomen , лучше покажите пару строк исходных данных и желаемые для них выходные.
...
Рейтинг: 0 / 0
27.03.2015, 17:53:49
    #38919416
unnomen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
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
27.03.2015, 18:01:48
    #38919425
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
Ну дык это... LEFT JOIN.
...
Рейтинг: 0 / 0
27.03.2015, 18:03:52
    #38919427
unnomen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
Akina,

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

Четвёртый день пишу приложение, голова кипит...
...
Рейтинг: 0 / 0
27.03.2015, 18:25:59
    #38919450
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
Код: 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
27.03.2015, 18:34:12
    #38919458
unnomen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
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
27.03.2015, 19:00:05
    #38919484
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
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
27.03.2015, 19:15:49
    #38919494
unnomen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование группового запроса для COUNT
AkinaТак что совет только один - вынуть руки наружу.
Виноват. Я забыл, что удалил пустой класс))
Спасибо большое за помощь. Буду вникать в JOIN.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Преобразование группового запроса для COUNT / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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