|   |   | 
| 
 | Объединение таблиц в запросе по нескольким реквизитам | ☑ | ||
|---|---|---|---|---|
| 0
    
        Bigbro 27.03.23✎ 06:48 | 
        как сделать правильно?
 у меня есть справочник, условно товары и есть регистр условно товары поставщиков. в регистре товары поставщиков есть реквизиты типа контрагент, ссылка1, ссылка2 которые как раз и есть мой справочник товары (там может быть пусто или одно заполнено или оба) как правильно сделать запрос чтобы выбрать мой товар и контрагента была бы одна ссылка все замечательно выбрать товары.ссылка регтовары.контрагент из регистрсведений.товарыпоставщиков как регтовары внутреннее соединение справочник.товары как товары по регтовары.ссылка1 = товары.ссылка а как вторую ссылку пристегнуть? | |||
| 1
    
        Bigbro 27.03.23✎ 06:49 | 
        через отдельные запросы и юнион?     | |||
| 2
    
        Мультук гуру 27.03.23✎ 08:13 | 
        выбрать
 товары.ссылка регтовары.контрагент из регистрсведений.товарыпоставщиков как регтовары внутреннее соединение справочник.товары как товары по (регтовары.ссылка1 = товары.ссылка) ИЛИ (регтовары.ссылка2 = товары.ссылка) | |||
| 3
    
        Bigbro 27.03.23✎ 08:19 | 
        ага, спасибо, уже сам понял что ступил)     | |||
| 4
    
        АгентБезопасной Нацио 27.03.23✎ 08:41 | 
        постановка задачи странная...     | |||
| 5
    
        Bigbro 27.03.23✎ 08:54 | 
        там все сильно сложнее, это синтетический кусок на пальцах выдранный чтоб мне понять)
 но задача вполне реальная, более того я вам так скажу что практически каждый с этой хренью работает. общеиспользуемое ПО вот таким образом с данными обращается. | |||
| 6
    
        Bigbro 27.03.23✎ 08:59 | 
        лучше расскажите почему я вытащил в подзапрос таблицу, ограничив на берегу количество данных плюс минус на порядок, и потом затолкал во внутреннее соединение а стало работать медленнее наоборот.
 меня вроде учили что условия надо накладывать как можно раньше и жестче. а получается что полные таблицы соединить и наложить условия на результат быстрее..( странно. | |||
| 7
    
        Bigbro 27.03.23✎ 09:06 | 
        хотя второй раз быстрее наоборот выполнилось. ладно пофигу разница все равно на уровне 2%. едем дальше)     | |||
| 8
    
        Momus 27.03.23✎ 09:13 | 
        (7) как минимум разбить соединение по ИЛИ на ОБЪЕДИНИТЬ ВСЕ     | |||
| 9
    
        Гена гуру 27.03.23✎ 09:18 | 
        (8) В старые добрые времена меня учили, что некомильфо использовать логическое ИЛИ в условиях соединения, то есть в секции ПО запроса = резкое замедление. Но это было давно, когда деревья были большие )     | |||
| 10
    
        АНДР 27.03.23✎ 09:22 | 
        (0) Производительность сильно зависит от сервера БД.
 (6) Или ограничивает использование индексов. План смотрел? В Или один скан (индекса) РС, с предварительным отбором уже 2. | |||
| 11
    
        АНДР 27.03.23✎ 09:23 | 
        (8) Зависит от наличия индексов и параметров выборки по ним.     | |||
| 12
    
        Bigbro 27.03.23✎ 09:25 | 
        (8) то есть в 1 я правильно предположил.
 сейчас попробую вырастет конечно огород большой но если будет быстрее это важно. (10) не смотрел пока, сейчас займемся) | |||
| 14
    
        АгентБезопасной Нацио 27.03.23✎ 09:34 | 
        (5) уровень секретности поражает... И особенно поражает когда на "общеиспользуемое ПО" ставят новичков [в этом стеке].     | |||
| 15
    
        Bigbro 27.03.23✎ 11:08 | 
        (14) прорвемся, все когда то были новичками) мозгам полезно загонять их в режим новичка, склероз не страшен)
 насчет секретности я устал читать фолианты с перечислениями запретов поэтому уже по умолчанию принимаю что не имею права рассказывать ничего без отдельного разрешения и одобрения. | |||
| 16
    
        АгентБезопасной Нацио 27.03.23✎ 11:49 | 
        (15) не, я не о том, что ты пока не всё понимаешь. Понятно, что освоишь. Но ставить новичка в теме на важные вещи (тем более, общеиспользуемые) - нехорошо, неправильно.
 Видимо, потому-то у нас все эти ГосИСы и иже работают проктально-генитально. | |||
| 17
    
        Bigbro 27.03.23✎ 12:16 | 
        (16) не не я не со стороны вендора, это было бы действительно безответсвенно, я со стороны пользователя общеиспользуемого сервиса, которому понадобили по хотелкам юзеров некоторые доработки к функционалу, для чего пришлось влезть во внутреннюю структуру данных и поковыряться.     | |||
| 18
    
        Bigbro 27.03.23✎ 13:01 | 
        короче не делайте по ИЛИ соединение - 5 минут 
 вместо полсекунды для объединения отдельных запросов. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |