Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL [D7, IB6.x]


fantasy ©   (2006-06-11 02:28:00) 

Немогу собрать таблицу есть 2 поля F_1 и F_2 в таблице T_TOVAR  нужен SQL запрос чтобы появилось 3 поле COUNT и в нем чесло повторений поля F_1 в таблице.
Тоесть если в поле F_1 три раза встречается одна и таже запись то то COUNT напротив всех этих  полей  будет 3.
помогите написать запрос.
PS Firebird_2_0.


fantasy   (2006-06-12 18:30:00) [1]

Спосмибо всем
Все работает


Desdechado   (2006-06-11 17:50:00) [2]

что-то я не понял, а как F_2 должно участвовать в запросе?
какое значение этого F_2 должно быть, если есть несколько записей с одинаковым F_1, но разным F_2?

PS
GROUP BY и HAVING тут бы лучше смотрелось


Sergey Masloff   (2006-06-11 17:33:00) [3]

sniknik ©   (11.06.06 16:07) [4]
FB позволяет начиная с 2.0, IB6x не позволяет


sniknik   (2006-06-11 16:07:00) [4]

> select F_1, F_2, (select count(*) from T_TOVAR D where D.F_1 = M.F_1) as cnt
> from T_TOVAR M

select M.F_1, M.F_2, D.cnt
from T_TOVAR M
LEFT JOIN (select F_1, count(*) as cnt from T_TOVAR group by F_1) D
ON M.F_1 =  D.F_1

то же самое только должно быть быстрее, намного. (если конечно синтаксис FB вообще так позволяет... не в курсе)


atruhin   (2006-06-11 15:13:00) [5]

select F_1, F_2, (select count(*) from T_TOVAR D where D.F_1 = M.F_1) as cnt
from T_TOVAR M


fantasy   (2006-06-11 14:47:00) [6]

знаю что не эфективно но для меня это единственый выход
ПОМОГИТЕ С ПРИМЕРОМ.
ЗАРАНЕЕ БЛАГОДАРЕН.


Sergey Masloff   (2006-06-11 07:57:00) [7]

Считать подзапросом. Только неэффективно это. Обычно все же делают запрс с группировкой сворачивая повторяющиеся значения.


Наверх

Титульная страница Поиск, карта сайта Написать письмо