MySQL сложный поиск в группах с ИЛИ - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.7196
BTC/USD64441.2844
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 27.03.2015, 18:48   #1
pokerface
Ебланнед
 
Регистрация: 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'
а потом ещё раз проверять (для каждого банка), чтобы у этого банка _во всех_ пакетах не было тк
а ещё для каждого документа так делать надо
топорно, мягко говоря..
pokerface вне форума  
Старый 27.03.2015, 18:55   #2
x999xx
xx999x
 
Аватар для x999xx
 
Регистрация: 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 ( )
x999xx вне форума  
Старый 27.03.2015, 19:04   #3
Sultan
Шучу на половину
 
Аватар для Sultan
 
Регистрация: 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.
Sultan вне форума  
Старый 27.03.2015, 19:10   #4
pokerface
Ебланнед
 
Регистрация: 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'
вот чтобы так написать нужно знать заранее, чего хочет банк
а у меня только данные про документы на руках - чё есть
pokerface вне форума  
Старый 27.03.2015, 19:21   #5
Sultan
Шучу на половину
 
Аватар для Sultan
 
Регистрация: 23.01.2011
Сообщений: 5,779
Бабло: $1156890
По умолчанию

не совсем понял, что значит знать чего хочет банк
у тебя нет перечня доков?
Sultan вне форума  
Старый 27.03.2015, 19:26   #6
pokerface
Ебланнед
 
Регистрация: 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
нужно заранее знать, чего каждый банк хочет
pokerface вне форума  
Старый 27.03.2015, 19:45   #7
Sultan
Шучу на половину
 
Аватар для Sultan
 
Регистрация: 23.01.2011
Сообщений: 5,779
Бабло: $1156890
По умолчанию

опиши подробнее, нихуя не понятно
как нет то, не могу понять, у тебя должны быть эти условия если ты из них селект собираешься делать.
я так понимаю ты сводишь скоринговые карты по условиям банка.
для каждого условия банка нужна своя строка по докам в бд по ним и выгребаешь банки
Sultan вне форума  
Старый 27.03.2015, 19:54   #8
pokerface
Ебланнед
 
Регистрация: 22.03.2015
Сообщений: 145
Бабло: $18300
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от Sultan Посмотреть сообщение
опиши подробнее, нихуя не понятно
как нет то, не могу понять, у тебя должны быть эти условия если ты из них селект собираешься делать.
я так понимаю ты сводишь скоринговые карты по условиям банка.
для каждого условия банка нужна своя строка по докам в бд по ним и выгребаешь банки
да нет у меня условий банка в момент, когда я документы клиента подсовываю
эти условия мне и надо найти
я подбираю для клиента банки, которым удовлетворяет пакет документов клиента
pokerface вне форума  
Старый 27.03.2015, 19:57   #9
x999xx
xx999x
 
Аватар для x999xx
 
Регистрация: 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 ( )
x999xx вне форума  
Старый 27.03.2015, 20:31   #10
Sultan
Шучу на половину
 
Аватар для Sultan
 
Регистрация: 23.01.2011
Сообщений: 5,779
Бабло: $1156890
По умолчанию

вот как в этом разобраться. из клиентов фильтруешь а банки откуда выкидываешь?
чтоб сапоставить должны быть данные для фильтра
Sultan вне форума