Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL запрос, функции работы с датами 
:(
    Опции темы
noober1
Дата 21.3.2011, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



Здравствуйте. Напомните пожалуйста как рабоать с датами.
Имеется

Клиент
++++++++++++++++++++
|     id_client     | ФИО         | 
++++++++++++++++++++
|    ...      |           ...             |  
++++++++++++++++++++

Заказ
++++++++++++++++++++++++++++
|     id     | id_client             |      Дата    |
++++++++++++++++++++++++++++
|    ...      |           ...             |        ...       |
++++++++++++++++++++++++++++

Нужно:
Вывести ФИО клиента который сделал более 2х заказов в марте 2011 года.
PM MAIL   Вверх
ziga
Дата 21.3.2011, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



А база какая ?

Код

select k.ФИО
  from Клиент k
 inner join (select z.id_client, count(z.id) as c_count
               from Заказ z 
              where z.ДАта >= to_date('01.03.2010')
                and z.ДАта <= to_date('31.03.2010')
              group by z.id_client) t on t.id_client = k.id_client and t.c_count > 2

PM MAIL   Вверх
Akina
Дата 21.3.2011, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(noober1 @  21.3.2011,  10:17 Найти цитируемый пост)
как рабоать с датами

Один из наиболее зависимых от SQL-диалекта вопросов.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
noober1
Дата 21.3.2011, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



База на Access.
ziga, а я что-то и не подумал использовать такие условия для отбора по дате. Я пытался через функцию извленчь из даты месяц и год.

Это сообщение отредактировал(а) noober1 - 21.3.2011, 11:03
PM MAIL   Вверх
Akina
Дата 21.3.2011, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Разумнее использовать не два сравнения, а один 
Код

WHERE [Дата] BETWEEN #2011-03-01# AND #2011-03-31#



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 21.3.2011, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  21.3.2011,  11:16 Найти цитируемый пост)
Разумнее 

я бы предпочел сравнение на строго-меньше первого числа след. месяца.

Мне кажется так железобетоннее, вдруйх к дате и время затешется, мало ведь кто констрейнты на датутаму накурчивает, мол только дата.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
noober1
Дата 21.3.2011, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



А без INNER JOIN можно както сделать, использую обычное соединение?
PM MAIL   Вверх
Zloxa
Дата 21.3.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(noober1 @  21.3.2011,  13:13 Найти цитируемый пост)
А без INNER JOIN можно както сделать

можно, используя кроелированный скалярный подзапрос. Но нужно ли?
Цитата(noober1 @  21.3.2011,  13:13 Найти цитируемый пост)
использую обычное соединение? 

что не обычного вам кажется в Inner join?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
noober1
Дата 21.3.2011, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



Zloxa, если не составит труда можете написать этот кроелированный скалярный подзапрос?
PM MAIL   Вверх
Zloxa
Дата 21.3.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Если сможете хоть как-то обосновать необходимость того - пожалуйста.
А так - гадостям учить не склонен.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
noober1
Дата 21.3.2011, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



Попробовал запросик который любезно написал ziga - не работает.
Аксес не знайет функцию to_date :(
PM MAIL   Вверх
Akina
Дата 21.3.2011, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(noober1 @  21.3.2011,  20:20 Найти цитируемый пост)
Аксес не знайет функцию to_date :( 

CDate()



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
noober1
Дата 21.3.2011, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



Спасибо. Теперь работает, но ругается на
Код

and t.c_count > 2

"Не поддерживается выражение объеденения"
Не подскажите в чем проблема?
PM MAIL   Вверх
noober1
Дата 30.3.2011, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



Помогите еще один запросик сделать. 
Нужно получить ФИО агентов, которые не заказывали Электронику. 
Код

SELECT DISTINCT fio, 
FROM agent AS a, zakaz AS z
WHERE a.id_ag=z.id_ag AND type NOT IN
(SELECT id FROM typedetali WHERE name='Электроника');


Естественно, если один агент заказывал Электронику и другие типы товаров, то данный запрос выводит этого агента. Помогите составить запрос, чтобы он такого агента не выводил.
PM MAIL   Вверх
Zloxa
Дата 30.3.2011, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(noober1 @  30.3.2011,  11:34 Найти цитируемый пост)
получить ФИО агентов, которые не заказывали Электронику. 

Код

SELECT fio, 
FROM agent AS a, zakaz AS z,
WHERE a.id_ag=z.id_ag 
group by fio
having count( case when z.type IN (SELECT id FROM typedetali WHERE name='Электроника')  then 1 end) = 0



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.