powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SELECT COUNT(SELECT..) .. => .. syntax ..
25 сообщений из 25, страница 1 из 1
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38895560
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Чего то заплюхался с запросом...

Приготовил вырезку:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE `model` (
  `type_id` int(11) NOT NULL,
  `mark_id` int(11) NOT NULL,
  `doc_id` int(11) NOT NULL,
  KEY `mid` (`mark_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=1;

INSERT INTO `model` (`type_id`, `mark_id`, `doc_id`)
VALUES
	(12,3,1426),
	(12,3,1426),
	(12,3,1426),
	(12,3,1427),
	(12,3,1427),
	(12,1,378),
	(12,1,378),
	(12,1,378);



Делаю выборку:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
	ml.type_id,
	ml.mark_id,
	ml.doc_id
FROM model AS ml
WHERE 1=1
	AND ml.type_id = 12
GROUP BY ml.doc_id
ORDER BY ml.mark_id,ml.doc_id
;



Получаю:
Код: xml
1.
2.
3.
4.
5.
6.
7.
------------------------------
| type_id | mark_id | doc_id |
------------------------------
| 12      | 1       | 378    |
| 12      | 3       | 1426   |
| 12      | 3       | 1427   |
------------------------------



По сути мне нужно выбрать те строки где mark_id не повторяется.

Пробую вывести кол-во для начала:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
	ml.type_id,
	ml.mark_id,
	COUNT( SELECT ml2.doc_id FROM model AS ml2 WHERE ml2.type_id=12 AND ml2.mark_id=ml.mark_id GROUP BY ml2.doc_id ) AS docCount,
	ml.doc_id
FROM model AS ml
WHERE 1=1
	AND ml.type_id = 12
GROUP BY ml.doc_id
ORDER BY ml.mark_id,ml.doc_id
;



Получаю ошибку:
Код: sql
1.
2.
3.
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near 
'SELECT ml2.doc_id FROM model AS ml2 WHERE ml2.type_id=12 AND ml2.mark_id=ml.mark' at line 4



Подскажите как правильно...можно линком, сам сгуглить не смог...
Благодарю.
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38895571
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сформулируйте задачу, а не свои попытки её решить. Например, типа такого: получить уникальные пары (type_id, mark_id) и для каждой такой пары - количество уникальных doc_id.
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38895608
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно заменить type_id (к пр на 1), если запись одна
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38895787
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. конструкцию Group By + Having
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38896374
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоесть конструкция

COUNT( SELECT * from ...) никого не смутила?
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38896387
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453 , потому я и попросил ТС показывать не свои измышления...
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38896797
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453тоесть конструкция

COUNT( SELECT * from ...) никого не смутила?

а чего, нормальная конструкция, немного скобок добавить и будет всё ок.
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38896853
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivа чего, нормальная конструкция, немного скобок добавить и будет всё ок.
Буду признателен, если покажите..
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38896903
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodatychMasterZivа чего, нормальная конструкция, немного скобок добавить и будет всё ок.
Буду признателен, если покажите..

да тут все будут признательны:)
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38896918
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivalex564657498765453тоесть конструкция

COUNT( SELECT * from ...) никого не смутила?

а чего, нормальная конструкция, немного скобок добавить и одно слово переставить в другое место и будет всё ок.вот так
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897081
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirвот так
Если вы на это намекаете:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
	ml.type_id,
	ml.mark_id,
	( SELECT COUNT(ml2.doc_id) FROM model AS ml2 WHERE ml2.type_id=12 AND ml2.mark_id=ml.mark_id GROUP BY ml2.doc_id ) AS docCount,
	ml.doc_id
FROM model AS ml
WHERE 1=1
	AND ml.type_id = 12
GROUP BY ml.doc_id
ORDER BY ml.mark_id,ml.doc_id
;


То:
Код: sql
1.
Subquery returns more than 1 row
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897083
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что в скобках:
Код: sql
1.
SELECT COUNT(ml2.doc_id) FROM model AS ml2 WHERE ml2.type_id=12 AND ml2.mark_id=3 GROUP BY ml2.doc_id


Возвращает две строки... (ml2.mark_id=3 как частный случай)
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897090
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453тоесть конструкция

COUNT( SELECT * from ...) никого не смутила?
Позвольте. Меня не смутила. Если не затруднит, что в ней не так, можно линком на матчасть.
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897132
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Borodatychчто в ней не так http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count
под каунт ставится выражение, а вы пытаетесь применить его к подзапросу
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897285
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count
под каунт ставится выражение, а вы пытаетесь применить его к подзапросу
Благодарю и прошу прощения за лень, очевидное рядом.

Но тогда вы ставите меня в тупик, предавая загадочности, еще большим не пониманием написанного Вами:
tanglir и одно слово переставить в другое место и будет всё ок.вот так
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897358
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Borodatych , ну так а формулировку ЗАДАЧИ мы когда-нить услышим?
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897433
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirBorodatychчто в ней не так http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count
под каунт ставится выражение, а вы пытаетесь применить его к подзапросу

Я и говорю. обернуть в ещё одни скобки -- и будет подзапрос, т.е. корректное выражение.
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897499
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЯ и говорю. обернуть в ещё одни скобки -- и будет подзапрос, т.е. корректное выражение.
Дико извиняюсь, но можно как для дебила, подправьте до правильного:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
	ml.type_id,
	ml.mark_id,
	COUNT( SELECT ml2.doc_id FROM model AS ml2 WHERE ml2.type_id=12 AND ml2.mark_id=ml.mark_id GROUP BY ml2.doc_id ) AS docCount,
	ml.doc_id
FROM model AS ml
WHERE 1=1
	AND ml.type_id = 12
GROUP BY ml.doc_id
ORDER BY ml.mark_id,ml.doc_id
;



Akina Borodatych , ну так а формулировку ЗАДАЧИ мы когда-нить услышим?
Вы уже спрашивали ( 17345385 ) и я Вам ниже отписался ( 17345536 ).
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897545
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodatychMasterZivЯ и говорю. обернуть в ещё одни скобки -- и будет подзапрос, т.е. корректное выражение.
Дико извиняюсь, но можно как для дебила, подправьте до правильного:


Я имел в виду так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
	ml.type_id,
	ml.mark_id,
	COUNT( (SELECT ml2.doc_id FROM model AS ml2 WHERE ml2.type_id=12 AND ml2.mark_id=ml.mark_id GROUP BY ml2.doc_id) ) AS docCount,
	ml.doc_id
FROM model AS ml
WHERE 1=1
	AND ml.type_id = 12
GROUP BY ml.doc_id
ORDER BY ml.mark_id,ml.doc_id
;




Но я не могу утверждать, что это правильно или неправильно , потому что мы не знаем, что же тебе нужно.
Я могу лишь сказать, что придраться к SELECT внутри COUNT я не могу .
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897557
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivtanglirпропущено...
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count
под каунт ставится выражение, а вы пытаетесь применить его к подзапросу

Я и говорю. обернуть в ещё одни скобки -- и будет подзапрос, т.е. корректное выражение.

держащийся на чесном слове...ибо он может вернуть больше одного значения. а главное, выборка селектом должна быть одного значения а не звёздочка!!!
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897575
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Borodatychя Вам ниже отписался ( 17345536 ).Это не постановка задачи. Это опять описание куска решения (до сих пор не озвученной задачи) выбранным Вами способом.
Ну не хотите - не надо.
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897578
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем всем, принявшим участие, спасибо.
У меня было всего 41 запись, и я их давно в ручную обработал.
Просто был интерес в автоматизации, знаний ради.
Благодарю!
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897581
Borodatych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaЭто не постановка задачи. Это опять описание куска решения (до сих пор не озвученной задачи) выбранным Вами способом. Ну не хотите - не надо.
Я просто не понимаю что Вы от меня хотите услышать. То что в том ответе - это именно то что я сделал ручками..
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897791
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodatychНо тогда вы ставите меня в тупик, предавая загадочности, еще большим не пониманием написанного Вами:
tanglirпропущено...
вот таквместо count( select a from ...) сделать select (count (a) from)
Добавили скобок и переставили одно слово )
...
Рейтинг: 0 / 0
SELECT COUNT(SELECT..) .. => .. syntax ..
    #38897792
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirсделать (select count (a) from)вот так, конечно же
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SELECT COUNT(SELECT..) .. => .. syntax ..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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