|
|
|
Pls помогите с составлением условия WHERE
|
|||
|---|---|---|---|
|
#18+
Народ, помогите плиз с решением. Есть 2 таблицы 1 мастер, вторая детей. Таблица по авиабилетам. Детэйл по купонам. 1 купон это 1 участок маршрута (1 запись в базе detail) Например если по билету маршрут Москва-Киев-Астрахань-Киев-Москва, то соответственно выходит, 1-й купон Москва-Киев, 2-й Киев-Астрахань, 3-й Астрахань-Киев и т.п. структура детэйл таблицы примерно такая: ID from to ticketID coupon_num 1 Москва Киев 1 1 2 Киев Москва 1 1 Вопрос следующий мне необходимо выбрать из базы все билеты, с началом маршрута например из Москвы (тут всё просто WHERE from='Москва' and coupon_num=1), через, предположим Киев, и заканчивающийся в Новосибирске например. Подскажите как составить условие. которую неделю уже ломаю голову, ничего придумать не могу. Пока решение такое, что я делаю SELECT всех билетов, потом в цикле их обхожу, и для каждого ID билета вытаскиваю из detail таблицы маршрут, соединяю его в одну строку (Москва-Киев-Астрахань-Киев-Москва) и потом проверяю процедурами по работе со строками, условия типа если в строке есть москва на позиции 1, потом Киев в любой позиции и т.п. Но такой метод работает очень долго.... примерно из 50 тысяч записей, полезными в итоге выходят примерно 100. Нужно позарез сделать условие, средствами самой базы. Всем заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2008, 15:37 |
|
||
|
Pls помогите с составлением условия WHERE
|
|||
|---|---|---|---|
|
#18+
1. начальный пункт ты уже составил 2. конечный пункт: было-бы неплохо хранить колво пунктов в мастер таблице для каждого билета. тогда эта задача сводится к первой Код: plaintext 3. через: подзапрос типа: Код: plaintext 1. 2. 3. 4. 5. конечно OR особенно в подзапросе будет отрабатывать медлено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2008, 16:52 |
|
||
|
Pls помогите с составлением условия WHERE
|
|||
|---|---|---|---|
|
#18+
Если действительно добавить в master количество купонов (хотя бы как вычислимое поле), то можно так. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2008, 17:11 |
|
||
|
Pls помогите с составлением условия WHERE
|
|||
|---|---|---|---|
|
#18+
Спасибо, буду пробовать. Задача усложняется :-) Ещё необходимо после всего этого сгруппировать их по полному маршруту, и соответственно посчитать стоимсоть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 08:38 |
|
||
|
Pls помогите с составлением условия WHERE
|
|||
|---|---|---|---|
|
#18+
В билете идет максимально 4 купона. Города кодируются по кодировке IATA 3-х буквенными кодами соответсвенно по полному билету марушрут будет 15 символов (ALA-MOW-TSE-DME). Наверное, самый логичный вариант будет, в мастер-таблице создать поле полного маршрута, STING (15), и по нему уже делать СТРИНГОВУЮ ВЫБОРКУ. на мой взгляд это самое оптимальное решенеи, в плане быстродействия запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 08:45 |
|
||
|
Pls помогите с составлением условия WHERE
|
|||
|---|---|---|---|
|
#18+
да. в таком случае это наиболее очевидный подход. и можно использовать оператор LIKE для поиска. еще-бы выяснить вероятность увеличения кол-ва купонов в ближайшие лет 5... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2008, 11:50 |
|
||
|
|

start [/forum/topic.php?fid=55&tid=2011438]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
208ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 536ms |

| 0 / 0 |
