The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
MySQL сложный поиск в группах с ИЛИ  , !*! greenwar, 27-Мрт-15, 15:57  [смотреть все]
добрый день
есть такое условие у банка, который требует документы от клиента, ему нужна 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'
а потом ещё раз проверять (для каждого банка), чтобы у этого банка _во всех_ пакетах не было тк
а ещё для каждого документа так делать надо
топорно, мягко говоря..

  • MySQL сложный поиск в группах с ИЛИ  , !*! Павел Самсонов, 16:55 , 27-Мрт-15 (1)
  • MySQL сложный поиск в группах с ИЛИ  , !*! name, 17:52 , 27-Мрт-15 (6)
    • MySQL сложный поиск в группах с ИЛИ  , !*! greenwar, 05:30 , 28-Мрт-15 (8)
      >[оверквотинг удален]
      > (select bank_id from _таблица банков требующих документ 1_)
      > and
      > bank_id not in
      > (select bank_id from _таблица банков требующих документ 2_)
      > and
      > bank_id not in
      > (select bank_id from _таблица банков требующих документ 3_)
      > хотя все три таблицы имеет смысл привести к нормальной форме
      > банки:пакеты
      > пакеты:документы

      вот условие например:
      Паспорт + 2-НДФЛ + II документ + III документ
      II документ:
      Загран/ВУ/ИНН/СНИЛС/ОМС
      III документ:
      СТС (4 года)/Загран (12 мес)/ДМС/ТК

      заметь, первая строка это И
      но в каждом из пакетов ИЛИ - нужен хотя бы 1 документ
      и это не то условие, которое надо просто в sql перевести
      это я клиентом с соответствующими документам должен найти банки с подходящими условиями
      по-моему оно тут не сработает

      как-то так:
      разбить банк на пакеты и хранить в виде:
      Паспорт
      2-НДФЛ
      Загран/ВУ/ИНН/СНИЛС/ОМС
      СТС (4 года)/Загран (12 мес)/ДМС/ТК

      потом найти те пакеты, которым удовлетворяют мои документы
      и найти те банки, в которых ВСЕ их пакеты удовлетворены

      table packets:
      bank packet pass ndfl zagran vu inn snils oms sts zagranT dms tk
      sber     1          1      0         0     0  0    0    0   0     0     0   0
      sber     2          0      1         0     0  0    0    0   0     0     0   0
      sber     3          0      0         1     1  1    1    1   0     0     0   0
      sber     4          0      0         0     0  0    0    0   4     12    1   1

      • MySQL сложный поиск в группах с ИЛИ  , !*! Павел Самсонов, 18:00 , 29-Мрт-15 (9)
        • MySQL сложный поиск в группах с ИЛИ  , !*! greenwar, 07:41 , 30-Мрт-15 (10)
          > Теперь понятно, в принципе решение, только в примере паспорт и ндфл всегда
          > 1 а, II и III документы дают 16 комбинаций, то есть
          > 16 вариантов пакетов для сбербанка. И проверять потом придется точное совпадение
          > строки киента со строкой пакета и единицы и нули.

          нет, как раз каждый пакет отдельно стоящий и должен совпасть строго по своему пункту(ам)




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру