Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сложный поиск в группах с ИЛИ / 11 сообщений из 11, страница 1 из 1
27.03.2015, 12:02:07
    #38918806
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
добрый день
есть такое условие у банка, который требует документы от клиента, ему нужна 2-ндфл ИЛИ трудовая
при поиске неизвестно, чего хочет банк, банков много, просто есть трудовая например (tk=1), как попасть в это условие?
как его сохранить вообще в базе правильно и потом найти?
условия могут быть такими:
1. пакет документов.
2. пакет + один из нескольких + еще один из нескольких.
3. пакет + (один ПАКЕТ ИЛИ второй ПАКЕТ ИЛИ третий пакет)
...
Рейтинг: 0 / 0
27.03.2015, 12:23:51
    #38918862
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
tip78как его сохранить вообще в базе правильно
Ввести в структуру таблицы банков поле packet со ссылкой на запись в таблице пакетов.
tip78и потом найти?
Код: sql
1.
SELECT packet FROM banks WHERE name = 'Нужный банк'


tip78условия могут быть такими:
Для заданного вопроса это неважно.
...
Рейтинг: 0 / 0
27.03.2015, 12:33:13
    #38918880
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
Akinatip78как его сохранить вообще в базе правильно
Ввести в структуру таблицы банков поле packet со ссылкой на запись в таблице пакетов.


а таблица пакетов как выглядит, и запись в ней?
и как ссылка выглядит?
...
Рейтинг: 0 / 0
27.03.2015, 12:34:51
    #38918883
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
авторSELECT packet FROM banks WHERE name = 'Нужный банк'

это я так найду пакет
а мне надо найти банк, который удовлетворяет условию (при наличии ТК у клиента например)
...
Рейтинг: 0 / 0
27.03.2015, 12:39:04
    #38918894
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
А это ты напишешь развёртку пакетов в список документов. Причём для каждого банка ты получишь пачку альтернативных развёрток. И по полученным развёрткам уже сделаешь отбор.

Учиывая типы возможных вложений пакетов, думаю, что лучше это реализовывать хранимой процедурой.
...
Рейтинг: 0 / 0
27.03.2015, 12:56:34
    #38918921
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
так, хотелось бы по-русски, чтобы у меня картина понимания получилась
в таблице packets как выглядит строка пакета со сборником документов ИЛИ
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'
а потом ещё раз проверять (для каждого банка), чтобы у этого банка _во всех_ пакетах не было тк
а ещё для каждого документа так делать надо
топорно, мягко говоря..
...
Рейтинг: 0 / 0
27.03.2015, 13:30:43
    #38918979
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
Должна быть таблица пакетов, определяющая, из чего состоит пакет. Причём вариантов всего три:

1) Документ A AND Документ B AND Документ С AND ...
2) Пакет Y AND Пакет Z
3) Пакет Y OR Пакет Z

Рекурсивная процедура достаточно легко разворачивает такую структуру в варианты списков документов. А далее ты просто накладываешь список имеющихся у клиента документа как условие отбора (шаблон-маска) и выводишь все записи, которые NOT (NOT IN).
...
Рейтинг: 0 / 0
27.03.2015, 14:31:17
    #38919097
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
я никогда не писал процедуры в sql и сейчас пытаюсь понять суть алгоритма в деталях
и вот это:
Akina1) Документ A AND Документ B AND Документ С AND ...
2) Пакет Y AND Пакет Z
3) Пакет Y OR Пакет Z

как это в таблицу то положить??
...
Рейтинг: 0 / 0
27.03.2015, 14:49:06
    #38919137
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
Да хоть бы и
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE Packets (
packet_id INT, -- ИД пакета, ключ
type INT, -- тип контента (1-3)
data VARCHAR(MAX) -- контент (CSV)
)
...
Рейтинг: 0 / 0
27.03.2015, 15:20:46
    #38919196
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
Akina
Код: sql
1.
type INT, -- тип контента (1-3)


это TINYINT
...
Рейтинг: 0 / 0
27.03.2015, 17:34:47
    #38919387
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сложный поиск в группах с ИЛИ
Да хоть ENUM. Кстати, наиболее разумный в данном случае тип...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сложный поиск в группах с ИЛИ / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]