|
| Дата |
|
USD/RUB | 93.7196 | BTC/USD | 64441.2844 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
27.03.2015, 18:48
|
#1
|
Ебланнед
Регистрация: 22.03.2015
Сообщений: 145
Бабло: $18300
|
MySQL сложный поиск в группах с ИЛИ
есть такое условие у банка, который требует документы от клиента, ему нужна 2-ндфл ИЛИ трудовая
при поиске неизвестно, чего хочет банк, банков много, просто нет трудовой у клиента например (tk=0), как выкинуть банк, который её требует в пакете условий?
как его сохранить вообще в базе правильно и потом найти?
условия могут быть такими:
1. пакет документов.
2. пакет + один из нескольких + еще один из нескольких.
3. пакет + (один ПАКЕТ ИЛИ второй ПАКЕТ ИЛИ третий пакет)
если делать через отдельную таблицу, куда складывать условия-пакеты, то примерно как-то так:
bank='bank1',packet='packet1',doc1='ndfl',doc2='tk ',doc3='td' (это ИЛИ)
bank='bank1',packet='packet2',doc1='pass'
bank='bank1',packet='packet3',doc1='inn'
но тогда, если у клиента нет tk, то where doc1 != 'tk' AND doc2 != 'tk' AND doc3 != 'tk'
а потом ещё раз проверять (для каждого банка), чтобы у этого банка _во всех_ пакетах не было тк
а ещё для каждого документа так делать надо
топорно, мягко говоря..
|
|
|
27.03.2015, 18:55
|
#2
|
xx999x
Регистрация: 20.12.2010
Сообщений: 2,215
Бабло: $473391
|
Цитата:
Сообщение от pokerface
есть такое условие у банка, который требует документы от клиента, ему нужна 2-ндфл ИЛИ трудовая
при поиске неизвестно, чего хочет банк, банков много, просто нет трудовой у клиента например (tk=0), как выкинуть банк, который её требует в пакете условий?
как его сохранить вообще в базе правильно и потом найти?
условия могут быть такими:
1. пакет документов.
2. пакет + один из нескольких + еще один из нескольких.
3. пакет + (один ПАКЕТ ИЛИ второй ПАКЕТ ИЛИ третий пакет)
если делать через отдельную таблицу, куда складывать условия-пакеты, то примерно как-то так:
bank='bank1',packet='packet1',doc1='ndfl',doc2='tk ',doc3='td' (это ИЛИ)
bank='bank1',packet='packet2',doc1='pass'
bank='bank1',packet='packet3',doc1='inn'
но тогда, если у клиента нет tk, то where doc1 != 'tk' AND doc2 != 'tk' AND doc3 != 'tk'
а потом ещё раз проверять (для каждого банка), чтобы у этого банка _во всех_ пакетах не было тк
а ещё для каждого документа так делать надо
топорно, мягко говоря..
|
table: banks
id,name,doctype
1,uefabank,2
....
10,sberbank,3
...
table: doctypes
id,name
1,trudovaya
2,xz
3,2ndfl
select * from banks where doctype=3
------
10,sberbank,3
ты про это или я не понял опять
__________________
я знаю стабильный курс на будущее eur/(usd+0.001) + usd/(eur+0.00101) = 0 ( )
|
|
|
27.03.2015, 19:04
|
#3
|
Шучу на половину
Регистрация: 23.01.2011
Сообщений: 5,779
Бабло: $1156890
|
создавай так пакетную таблицу
id;name;ndfl;pass;tk
tk = '1' AND ndfl = '1' OR tk = '1'
если нужно наличие то 1 в пакете, нет то 0
для каждого пакета будет запись, если у банка несколько наборов возможно то несколько записей
или так id;bank_id;name;ndfl;pass;tk
Последний раз редактировалось Sultan; 27.03.2015 в 19:09.
|
|
|
27.03.2015, 19:10
|
#4
|
Ебланнед
Регистрация: 22.03.2015
Сообщений: 145
Бабло: $18300
ТС -->
|
ТС
Цитата:
Сообщение от x999xx
table: banks
id,name,doctype
1,uefabank,2
....
10,sberbank,3
...
table: doctypes
id,name
1,trudovaya
2,xz
3,2ndfl
select * from banks where doctype=3
------
10,sberbank,3
ты про это или я не понял опять
|
ты расписал схему простешего поиска по одному документу есть/нет
он кстати делается в 1 таблицу так то )
Цитата:
Сообщение от Sultan
tk = '1' AND ndfl = '1' OR tk = '1'
|
вот чтобы так написать нужно знать заранее, чего хочет банк
а у меня только данные про документы на руках - чё есть
|
|
|
27.03.2015, 19:21
|
#5
|
Шучу на половину
Регистрация: 23.01.2011
Сообщений: 5,779
Бабло: $1156890
|
не совсем понял, что значит знать чего хочет банк
у тебя нет перечня доков?
|
|
|
27.03.2015, 19:26
|
#6
|
Ебланнед
Регистрация: 22.03.2015
Сообщений: 145
Бабло: $18300
ТС -->
|
ТС
Цитата:
Сообщение от Sultan
не совсем понял, что значит знать чего хочет банк
у тебя нет перечня доков?
|
у меня есть список доков клиента
а это
Цитата:
tk = '1' AND ndfl = '1' OR tk = '1'
|
селект из банковской таблицы, куда надо подставлять WHERE с телепатическим знанием дела
вот есть у меня Трудовая Книжка (tk=1), мне как найти все условия, где будет tk=1 OR ndfl=1 ИЛИ tk=1 AND inn=1
а в другом банке будет уже tk=1 AND pass=1 AND vu=1
нужно заранее знать, чего каждый банк хочет
|
|
|
27.03.2015, 19:45
|
#7
|
Шучу на половину
Регистрация: 23.01.2011
Сообщений: 5,779
Бабло: $1156890
|
опиши подробнее, нихуя не понятно
как нет то, не могу понять, у тебя должны быть эти условия если ты из них селект собираешься делать.
я так понимаю ты сводишь скоринговые карты по условиям банка.
для каждого условия банка нужна своя строка по докам в бд по ним и выгребаешь банки
|
|
|
27.03.2015, 19:54
|
#8
|
Ебланнед
Регистрация: 22.03.2015
Сообщений: 145
Бабло: $18300
ТС -->
|
ТС
Цитата:
Сообщение от Sultan
опиши подробнее, нихуя не понятно
как нет то, не могу понять, у тебя должны быть эти условия если ты из них селект собираешься делать.
я так понимаю ты сводишь скоринговые карты по условиям банка.
для каждого условия банка нужна своя строка по докам в бд по ним и выгребаешь банки
|
да нет у меня условий банка в момент, когда я документы клиента подсовываю
эти условия мне и надо найти
я подбираю для клиента банки, которым удовлетворяет пакет документов клиента
|
|
|
27.03.2015, 19:57
|
#9
|
xx999x
Регистрация: 20.12.2010
Сообщений: 2,215
Бабло: $473391
|
хуйня какаято если честно
Цитата:
Сообщение от x999xx
хуйня какаято если честно
|
Цитата:
ты расписал схему простешего поиска по одному документу есть/нет
он кстати делается в 1 таблицу так то )
|
ойх блять
table doctypes
1,ndfl
2,ndfl+huy
3,ndfl+huy+pizda
4,ndfl+huy+pizda+dzigurda
а ты так старался вопрос задать что вот эта хуйня никак не укладывается в голове
записывай в doc поле тогда документы через запятую, а потом будешь искать их типа select... where doc like '%ndfl%' and doc like '%pass%' и тп
__________________
я знаю стабильный курс на будущее eur/(usd+0.001) + usd/(eur+0.00101) = 0 ( )
|
|
|
27.03.2015, 20:31
|
#10
|
Шучу на половину
Регистрация: 23.01.2011
Сообщений: 5,779
Бабло: $1156890
|
вот как в этом разобраться. из клиентов фильтруешь а банки откуда выкидываешь?
чтоб сапоставить должны быть данные для фильтра
|
|
|
|