· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› MySQL - нужна помощь :(

Посл.отвђт Сообщенiе


Дата: Сен 30, 2003 18:59:56

Люди, подскажите мне оператор, чтобы выдал следующее:


в базе данных имею колонку rgid, значения в колонке типа INTEGER NOT NULL. Могут повторяться неопредленное количество раз, например (в виде ряда):

1 1 1 2 3 3 4 4 4 4 4 4 4 5 6 7 7 8 9 10 11

и т.п. Мне нужно подсчитать количество встречаемости 1, 2, 3 и т.п.
Т.е. для данного случая:
1 - 3 раза
2 - 1 раз
3 - 2 раза
4 - 7 раз и т.п.
Плиз, быстрее :(


Дата: Сен 30, 2003 19:20:33

одним оператором вроде никак
можешь сделать так:
select distinct(rgid) from table;
потом бежищь по каждому вхождению и выполняешь :
select count(rgid) where rgid=1 from table


Дата: Сен 30, 2003 19:51:58

rst

А UNION?


Дата: Сен 30, 2003 20:10:30

volodya
А UNION?
Насколько я помню, MySQL не поддерживает UNION.


Дата: Сен 30, 2003 20:24:08

Т.е. никак. Да?


Дата: Сен 30, 2003 20:24:21

Aquila
Поддерживает, начиная с версии 4.0


Дата: Сен 30, 2003 20:27:21

UNION is implemented in MySQL 4.0.0. - верно. Буду разбираться.


Дата: Сен 30, 2003 20:39:00 · Поправил: Aquila

Quantum
Поддерживает, начиная с версии 4.0
А, это да. Но ОБС говорит, что она ещё, вроде, сырая и проблемы какие-то.


Дата: Сен 30, 2003 20:44:21

volodya
Всё гениальное просто:
SELECT rgid, COUNT(rgid) FROM myTbl GROUP BY rgid;


_70689162__test.txt


Дата: Сен 30, 2003 21:08:09

В моей таблице 7506 значений такого типа, так что не все так просто :(


Дата: Сен 30, 2003 21:25:09

Aquila
IMHO, использование всяких UNION - признак плохо продуманного дизайна БД. Поэтому я ими не пользуюсь.

volodya
Не понял. При чём здесь кол-во значений? Объясни, плиз.


Дата: Сен 30, 2003 21:30:04

Quantum

Слушай, а как вывести только те, у которых БОЛЬШЕ, чем, скажем, 4. Что-то с IF?


Дата: Сен 30, 2003 22:30:56 · Поправил: Quantum

Теоретически можно так:
SELECT rgid,@a:=COUNT(*) FROM Test WHERE @a>4 GROUP BY rgid
В MySQL обещают скоро включить поддержку подобных запросов.

На данный момент могу только посоветовать следующий выход:
CREATE TABLE tmp TYPE=HEAP SELECT rgid,COUNT(*) AS cnt FROM Test GROUP BY rgid;
SELECT rgid, cnt FROM tmp WHERE cnt > 4;
DROP TABLE tmp;


Дата: Сен 30, 2003 22:44:08

Quantum

Значит, только через времянку...
ОК.
Спасибо тебе, родной. Ты как всегда крепко выручаешь мою задницу. Спасибо.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.080