Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.08;
Скачать: CL | DM;

Вниз

Как составить запрос. Неужели это невозможно.   Найти похожие ветки 

 
AndrewK ©   (2002-06-14 15:57) [0]

Уважаемые мастера.

Есть две таблицы Colors и Logs
В таблице Colors храняться названия восьми цветов с номерами от 0 до 7. В таблице Logs храняться записи в следующей структуре:

Logs
-----------------------------
IDR int
DateReg datetime
Color_ID int
User_ID int

Colors
-----------------------------
Code int
Name varchar(50)


Поле Colors.Code связано с Logs.Color_ID

Каждый день, пользователи выбирают свой цвет из восьми. Данные попадают в базу.

Мне надо составить отчет по динамике изменения предпочтений пользователей по датам. Главное, чтобы результирующая выборка представляла собой следующее:

Color_ID DateReg ColCount
-----------------------------------------------------------
0 01.01.2002 1
1 01.01.2002 3
2 01.01.2002 5
3 01.01.2002 4
4 01.01.2002 3
5 01.01.2002 0
6 01.01.2002 5
7 01.01.2002 0
0 02.01.2002 8
1 02.01.2002 6
2 02.01.2002 1
3 02.01.2002 0
4 02.01.2002 0
5 02.01.2002 8
6 02.01.2002 7
7 02.01.2002 1


Главное, чтобы в колонке Color_ID были представлены все восемь цветов (их коды от 0 до 7) на каждую дату. Это важно.

Стандартный JOIN здесь не работает.

Один из возможных вариантов решения - использование конструированного отчета в хранимой процедуре с использованием UNION , но это не красиво и не оптимально.

Неужели нет способа решить задачу одним запросом.

Заранее признателен за помощь.


 
DPetrovich ©   (2002-06-14 16:20) [1]

я подобную проблему решаю тем что создаю вспомогательную таблицу дат, скажем DATES (DateReg datetime), затем заполняю её всеми возможными записями... и запрос тогда

select
Color_ID=C.Code,
D.DateReg,
ColCount=
sum(case when L.Color_ID is not null then 1 else 0 end)
from
DATES D
join Colors C
left join Logs L on
L.Color_ID=C.Code and L.DateReg=D.DateReg


по-моему так


 
xNick   (2002-06-14 16:37) [2]

Напиши так:

SELECT Color_ID,DateReg,Count(*) as ColCount
FROM Logs
GROUP BY Color_ID,DateReg
ORDER BY 2,1


По-моему должно сработать



Страницы: 1 вся ветка

Текущий архив: 2002.07.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
7-23795
special_ruslan
2002-04-11 15:39
2002.07.08
мультимедиа + WinAPI


14-23745
VAleksey
2002-06-06 07:09
2002.07.08
Delphi 5. Компиляция и запуск.


1-23535
Mic_2000
2002-06-26 03:43
2002.07.08
Переменная в ехе файле


6-23722
slabur
2002-04-26 14:19
2002.07.08
Как проверить URL (работает или отсутствует)?


1-23654
Nigep
2002-06-25 00:14
2002.07.08
Поиск файла в Вин98 2000