|
|
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Все очень банально: 1 таблица Clients: ClientID :autoInc, PrinaryKey ClientName :string 2 Таблица Params: ClientID :Long-int ClientParam :string В первой таблице имена клиентов, во второй - их характеристики. Первая таблица связана со второй по полю ClientID, один-ко-многим. т.е. каждому клиенту из первой таблице соответствует любое количество записей из второй таблицы. В принципе - первая таблица и не нужна - достаточно второй. И вот я хочу отобрать всех клиентов у кого (например) ClientParam in ('Толстый','Богатый','Женатый')? т.е. должны присутствовать ОДНОВРЕМЕННО все эти три параметра. SELECT ClientID FROM params WHERE ClientParam in ('Толстый','Богатый','Женатый'); не катит по понятным причинам. Подскажите? Я вроде решение нашел, но оно совсем через ж, прям показывать стыдно :) а на первый взгляд должно все быть элементарно. Но как? Под вечер в голову ничего не лезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:07 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Разрешаются ли в таблице Params повторения? Возможна ли ситуация, когда у одного клиента два раза написано Толстый? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:15 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Вопрос понятен. Нет. пара "клиент-параметр" уникальна. В принципе она и может быть первичным ключем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:22 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:38 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Да, видать мне стыдиться нечего. :) Я так-же делаю... Почему то казалось есть более простое решение. Group и Having здесь как то... неожиданно, что ли.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:44 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Здравствуй, VIG! Мы с тобой хорошо сыграли в 4 руки (особенно 2 твоих). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:50 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Привет,Саныч! Как дела? Я то вообще-то думал ,что ты сразу ссылки выдашь на топики с аналогичными запросами :) 2 Antonius а на первый взгляд должно все быть элементарно Ну, можно еще через три Left/Inner JOINа, тоже "элементарно" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 20:10 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
VIGЯ то вообще-то думал ,что ты сразу ссылки выдашь А я не сообразил, как их найти. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 20:16 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Хорошо... А допустим есть еще одна таблица, так сказать, паралельно Params. Назовем ее Params2. И в ней другие характеристики, например марки автомобилей, принадлежащих клиентам (все это не более чем пример ). Понимаю, выглядит не логично и все такое, но на самом деле Params2 образуется из кучи других таблиц и запросов. Типа - косвенные характеристики. Но для простоты будем считать что она сама по себе, как и таблица Params. 3 Таблица Params2: ClientID :Long-int ClientCar :string связана с первой так же, по полю ClientID. У одного клиента может быть несколько автомобилей. нужно отобрать ClientParam in ('Толстый','Богатый','Женатый') and ClientCar in ('Mercedes','ВАЗ') насколько я понимаю, надо (проще) делать 2 запроса и выдавать пересечение их результатов, правильно мыслю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 20:39 |
|
||
|
Помогите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
select ClientId from Params inner join Params2 on Params.ClientId = Params2.ClientId WHERE ClientParam in ('Толстый','Богатый','Женатый') and ClientCar in ('Mercedes','ВАЗ') Group By ClientId having count(*)=6 :^))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 20:43 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32389704&tid=1676994]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
271ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 624ms |

| 0 / 0 |
