<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: MySQL сложный поиск в группах с ИЛИ  </title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html</link>
    <description>добрый день&lt;br&gt;есть такое условие у банка, который требует документы от клиента, ему нужна 2-ндфл ИЛИ трудовая&lt;br&gt;при поиске неизвестно, чего хочет банк, банков много, просто нет трудовой у клиента например (tk=0), как выкинуть банк, который её требует в пакете условий?&lt;br&gt;как его сохранить вообще в базе правильно и потом найти?&lt;br&gt;условия могут быть такими:&lt;br&gt;1. пакет документов.&lt;br&gt;2. пакет + один из нескольких + еще один из нескольких.&lt;br&gt;3. пакет + (один ПАКЕТ ИЛИ второй ПАКЕТ ИЛИ третий пакет) &lt;br&gt;&lt;br&gt;если делать через отдельную таблицу, куда складывать условия-пакеты, то примерно как-то так:&lt;br&gt;bank=&apos;bank1&apos;,packet=&apos;packet1&apos;,doc1=&apos;ndfl&apos;,doc2=&apos;tk&apos;,doc3=&apos;td&apos; (это ИЛИ)&lt;br&gt;bank=&apos;bank1&apos;,packet=&apos;packet2&apos;,doc1=&apos;pass&apos;&lt;br&gt;bank=&apos;bank1&apos;,packet=&apos;packet3&apos;,doc1=&apos;inn&apos;&lt;br&gt;&lt;br&gt;но тогда, если у клиента нет tk, то where doc1 != &apos;tk&apos; AND doc2 != &apos;tk&apos; AND doc3 != &apos;tk&apos;&lt;br&gt;а потом ещё раз проверять (для каждого банка), чтобы у этого банка _во всех_ пакетах не было тк&lt;br&gt;а ещё для каждого документа так делать надо&lt;br&gt;топорно, мягко говоря.. &lt;br&gt;</description>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (greenwar)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#10</link>
    <pubDate>Mon, 30 Mar 2015 04:41:24 GMT</pubDate>
    <description>&amp;gt; Теперь понятно, в принципе решение, только в примере паспорт и ндфл всегда &lt;br&gt;&amp;gt; 1 а, II и III документы дают 16 комбинаций, то есть &lt;br&gt;&amp;gt; 16 вариантов пакетов для сбербанка. И проверять потом придется точное совпадение &lt;br&gt;&amp;gt; строки киента со строкой пакета и единицы и нули.&lt;br&gt;&lt;br&gt;нет, как раз каждый пакет отдельно стоящий и должен совпасть строго по своему пункту(ам)&lt;br&gt;</description>
</item>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (Павел Самсонов)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#9</link>
    <pubDate>Sun, 29 Mar 2015 15:00:22 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;        1    &lt;br&gt;&amp;gt;  1  1    1    &lt;br&gt;&amp;gt; 1   0     0   &lt;br&gt;&amp;gt;   0   0 &lt;br&gt;&amp;gt; sber     4       &lt;br&gt;&amp;gt;    0      0  &lt;br&gt;&amp;gt;        0    &lt;br&gt;&amp;gt;  0  0    0    &lt;br&gt;&amp;gt; 0   4     12   &lt;br&gt;&amp;gt;  1   1 &lt;br&gt;&lt;br&gt;Теперь понятно, в принципе решение, только в примере паспорт и ндфл всегда 1 а, II и III документы дают 16 комбинаций, то есть 16 вариантов пакетов для сбербанка. И проверять потом придется точное совпадение строки киента со строкой пакета и единицы и нули.&lt;br&gt;</description>
</item>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (greenwar)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#8</link>
    <pubDate>Sat, 28 Mar 2015 02:30:33 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; (select bank_id from _таблица банков требующих документ 1_) &lt;br&gt;&amp;gt; and &lt;br&gt;&amp;gt; bank_id not in &lt;br&gt;&amp;gt; (select bank_id from _таблица банков требующих документ 2_) &lt;br&gt;&amp;gt; and &lt;br&gt;&amp;gt; bank_id not in &lt;br&gt;&amp;gt; (select bank_id from _таблица банков требующих документ 3_) &lt;br&gt;&amp;gt; хотя все три таблицы имеет смысл привести к нормальной форме &lt;br&gt;&amp;gt; банки:пакеты &lt;br&gt;&amp;gt; пакеты:документы &lt;br&gt;&lt;br&gt;вот условие например:&lt;br&gt;Паспорт + 2-НДФЛ + II документ + III документ&lt;br&gt;II документ:&lt;br&gt;Загран/ВУ/ИНН/СНИЛС/ОМС&lt;br&gt;III документ:&lt;br&gt;СТС (4 года)/Загран (12 мес)/ДМС/ТК&lt;br&gt;&lt;br&gt;заметь, первая строка это И&lt;br&gt;но в каждом из пакетов ИЛИ - нужен хотя бы 1 документ&lt;br&gt;и это не то условие, которое надо просто в sql перевести&lt;br&gt;это я клиентом с соответствующими документам должен найти банки с подходящими условиями&lt;br&gt;по-моему оно тут не сработает&lt;br&gt;&lt;br&gt;как-то так:&lt;br&gt;разбить банк на пакеты и хранить в виде:&lt;br&gt;Паспорт&lt;br&gt;2-НДФЛ&lt;br&gt;Загран/ВУ/ИНН/СНИЛС/ОМС&lt;br&gt;СТС (4 года)/Загран (12 мес)/ДМС/ТК&lt;br&gt;&lt;br&gt;потом найти те пакеты, которым удовлетворяют мои документы&lt;br&gt;и найти те банки, в которы</description>
</item>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (greenwar)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#7</link>
    <pubDate>Fri, 27 Mar 2015 14:53:01 GMT</pubDate>
    <description>&amp;gt; Таблица banks с полем packet, объединенная таблица documents с полями packet,document. &lt;br&gt;&amp;gt; Select document from documents where packet = &apos;packet1&apos;  дает состав документов &lt;br&gt;&amp;gt; пакета &lt;br&gt;&amp;gt; Select bank from banks, documents where banks.packet=documents.packet and documents.document!=&apos;tk&apos;, &lt;br&gt;&amp;gt; Дает банки без tk в пакете &lt;br&gt;&lt;br&gt;вот так придётся для каждого документа делать, а их там ~20&lt;br&gt;</description>
</item>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (name)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#6</link>
    <pubDate>Fri, 27 Mar 2015 14:52:51 GMT</pubDate>
    <description>использовать подзапросы&lt;br&gt;select bank from banks&lt;br&gt;where &lt;br&gt;bank_id not in &lt;br&gt;(select bank_id from _таблица банков требующих документ 1_)&lt;br&gt;and &lt;br&gt;bank_id not in &lt;br&gt;(select bank_id from _таблица банков требующих документ 2_)&lt;br&gt;and &lt;br&gt;bank_id not in &lt;br&gt;(select bank_id from _таблица банков требующих документ 3_)&lt;br&gt;&lt;br&gt;хотя все три таблицы имеет смысл привести к нормальной форме&lt;br&gt;банки:пакеты&lt;br&gt;пакеты:документы&lt;br&gt;</description>
</item>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (Павел Самсонов)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#5</link>
    <pubDate>Fri, 27 Mar 2015 14:13:01 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; но тогда, если у клиента нет tk, то where doc1 != &apos;tk&apos; &lt;br&gt;&amp;gt;&amp;gt; AND doc2 != &apos;tk&apos; AND doc3 != &apos;tk&apos; &lt;br&gt;&amp;gt;&amp;gt; а потом ещё раз проверять (для каждого банка), чтобы у этого банка &lt;br&gt;&amp;gt;&amp;gt; _во всех_ пакетах не было тк &lt;br&gt;&amp;gt;&amp;gt; а ещё для каждого документа так делать надо &lt;br&gt;&amp;gt;&amp;gt; топорно, мягко говоря..&lt;br&gt;&amp;gt; Таблица banks с полем packet, объединенная таблица documents с полями packet,document. &lt;br&gt;&amp;gt; Select document from documents where packet = &apos;packet1&apos;  дает состав документов &lt;br&gt;&amp;gt; пакета &lt;br&gt;&amp;gt; Select bank from banks, documents where banks.packet=documents.packet and documents.document!=&apos;tk&apos;, &lt;br&gt;&lt;br&gt; Вот я тебе написал, только != заменить на =. Этот селект из этих таблиц дает банки требующие тк&lt;br&gt;&amp;gt; Дает банки без tk в пакете &lt;br&gt;&amp;gt; Ну тут еще важно как ты у персоны документ хранишь. Можно разделить &lt;br&gt;&amp;gt; таблицу документов на таблицу пакетов и справочник документов, но такая реляция &lt;br&gt;&amp;gt; уже громоздка.</description>
</item>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (Павел Самсонов)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#4</link>
    <pubDate>Fri, 27 Mar 2015 14:06:16 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; а ещё для каждого документа так делать надо &lt;br&gt;&amp;gt;&amp;gt; топорно, мягко говоря..&lt;br&gt;&amp;gt; Таблица banks с полем packet, объединенная таблица documents с полями packet,document. &lt;br&gt;&amp;gt; Select document from documents where packet = &apos;packet1&apos;  дает состав документов &lt;br&gt;&amp;gt; пакета &lt;br&gt;&amp;gt; Select bank from banks, documents where banks.packet=documents.packet and documents.document!=&apos;tk&apos;, &lt;br&gt;&amp;gt; Дает банки без tk в пакете &lt;br&gt;&amp;gt; Ну тут еще важно как ты у персоны документ хранишь. Можно разделить &lt;br&gt;&amp;gt; таблицу документов на таблицу пакетов и справочник документов, но такая реляция &lt;br&gt;&amp;gt; уже громоздка.&lt;br&gt;&lt;br&gt;Но прямое условие выбрать банки, требующие tk будет работать.&lt;br&gt;</description>
</item>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (greenwar)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#3</link>
    <pubDate>Fri, 27 Mar 2015 14:03:17 GMT</pubDate>
    <description>&amp;gt; Ну тут еще важно как ты у персоны документ хранишь&lt;br&gt;&lt;br&gt;у клиента это&lt;br&gt;tk=0/1&lt;br&gt;ну ещё есть транспортное средство год выпуска например...&lt;br&gt;регион прописки&lt;br&gt;пздц в общем набор головняков&lt;br&gt;</description>
</item>

<item>
    <title>MySQL сложный поиск в группах с ИЛИ   (Павел Самсонов)</title>
    <link>https://slinkov.ru/openforum/vsluhforumID8/7959.html#2</link>
    <pubDate>Fri, 27 Mar 2015 14:00:42 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; AND doc2 != &apos;tk&apos; AND doc3 != &apos;tk&apos; &lt;br&gt;&amp;gt;&amp;gt; а потом ещё раз проверять (для каждого банка), чтобы у этого банка &lt;br&gt;&amp;gt;&amp;gt; _во всех_ пакетах не было тк &lt;br&gt;&amp;gt;&amp;gt; а ещё для каждого документа так делать надо &lt;br&gt;&amp;gt;&amp;gt; топорно, мягко говоря..&lt;br&gt;&amp;gt; Таблица banks с полем packet, объединенная таблица documents с полями packet,document. &lt;br&gt;&amp;gt; Select document from documents where packet = &apos;packet1&apos;  дает состав документов &lt;br&gt;&amp;gt; пакета &lt;br&gt;&amp;gt; Select bank from banks, documents where banks.packet=documents.packet and documents.document!=&apos;tk&apos;, &lt;br&gt;&amp;gt; Дает банки без tk в пакете &lt;br&gt;&lt;br&gt;Лажа, дает развертку документов по банку, я не знаю как, извини.&lt;br&gt;&amp;gt; Ну тут еще важно как ты у персоны документ хранишь. Можно разделить &lt;br&gt;&amp;gt; таблицу документов на таблицу пакетов и справочник документов, но такая реляция &lt;br&gt;&amp;gt; уже громоздка.</description>
</item>

</channel>
</rss>
