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


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


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

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

Учиывая типы возможных вложений пакетов, думаю, что лучше это реализовывать хранимой процедурой.
...
Рейтинг: 0 / 0
сложный поиск в группах с ИЛИ
    #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
сложный поиск в группах с ИЛИ
    #38918979
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должна быть таблица пакетов, определяющая, из чего состоит пакет. Причём вариантов всего три:

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

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

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


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


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