|
|
|
Как это можно сделать (условие выборки)
|
|||
|---|---|---|---|
|
#18+
Есть стандартнай запрос выборки. Оболочка позволяет только конкретизировать запрос - т.е. добавить дополнительные строки (фильтр) в where. Ну пример от фонаря: select cb.AdresDostavki from ClientBase cb, Pokupki p where p.DataPokupki = @Date and p.Client = cb.Client Могу добавить только "фильтр" который при исполнении запроса присобачит дополнительные "and'ы". Как вытянуть адрес доставки только того клиента, у которого эта покупка первая, хотя в базе клентов мог торчать давно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2002, 16:30:37 |
|
||
|
Как это можно сделать (условие выборки)
|
|||
|---|---|---|---|
|
#18+
Вообще-то, это как раз твоя задача сформулировать критерий того, что для данного покупателя эта покупка первая. Например, также от "фонаря", первая - значит единственная, тогда: WHERE ... AND pokupID IN (SELECT pokupID FROM pokupki GROUP BY pokupID HAVING count(*)=1) Слишком общий вопрос, чтобы можно было на него конкретно ответить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2002, 17:11:35 |
|
||
|
Как это можно сделать (условие выборки)
|
|||
|---|---|---|---|
|
#18+
Пристите Владимир. А если клиент сегодня сделал 2 заказа. Или 5. Но только сегодня! Мне желательно отобрать тех - которые в базе клиентов есть, а в базе покупок до сегодняшнего дня не было. С уважением, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2002, 09:19:24 |
|
||
|
Как это можно сделать (условие выборки)
|
|||
|---|---|---|---|
|
#18+
Общий принцип - это использование вложенных запросов. Кроме того, есть специальные ключевые слова, которые можно использовать в условии WHERE обычного SQL-запроса Почитайте в BOL описание к таким словам IN EXISTS SOME | ANY Например, в Вашем случае можно сделать условие выражающееся в словах примерно так: Отобрать тех клиентов у которых нет ни одной записи в таблице покупок с датой меньше чем текущая. Т.е. это получится примерно такое условие: ... WHERE ... AND pokupID NOT IN (SELECT pokupID FROM pokupki WHERE DataPokupki<@Date) Возможно, это и не идеальный вариант. Надо бы посмотреть конкретную структуру базы данных, да и в планировшике запросов посмотреть на предмет оптимизации. Но как общий принцип, думаю понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2002, 10:42:23 |
|
||
|
Как это можно сделать (условие выборки)
|
|||
|---|---|---|---|
|
#18+
Большое спасибо. В принципе, я ,ознакомившись с вашим первым предложением, додумался шерстить базу покупок со дня появления клиента до "вчерашнего". Но у меня 70 тыс. "клиентов", совершающих около 5 тыс. "покупок"в день, и база за 5 лет. А запрос, к которому я цепляюсь, отбирает "покупки" за день. И мне нужно прогнать базу по всем отобранным (5 тыс.). Я вешаю своим запросом всех и сам могу пойти поспать. Дайте пожалуйста совет, как мне можно поступить. Если Вам что-то нужно поконкретнее- могу сообщить только на ящик. Сами понимаете. Зараннее очень благодарен. Но если не ответите - я пойму. Нас таких идиотов очень много. С уважением, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2002, 12:38:20 |
|
||
|
Как это можно сделать (условие выборки)
|
|||
|---|---|---|---|
|
#18+
Создаете хранимую процедуру в ней создаете временую таблицу куда заносите только коды клиентов у которых до нужной даты была только одна покупка. В качестве параметра хранимой процедуре передаете дату и текст запроса, сцепляете переданный текст запроса + ' and '+ '<название кодового поля >+' in (Select '+'<название кодового поля >+' from #tmptable)', выполняете через EXECSQL и возвращаете результат клиенту. Это все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2002, 20:15:40 |
|
||
|
Как это можно сделать (условие выборки)
|
|||
|---|---|---|---|
|
#18+
Не по конкретному вопросу. Если перед Вами ставятся такие задачи, то лучше написать какого-нибудь клиента. Можно, конечно, строить хитрые WHERE, но лучше иметь нормальный инструмент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2002, 23:41:55 |
|
||
|
Как это можно сделать (условие выборки)
|
|||
|---|---|---|---|
|
#18+
Что-то типа того: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. -- Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2002, 01:30:56 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32033251&tid=1822279]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 377ms |

| 0 / 0 |
