Курилка Решить задачу запросом

Тема в разделе "Курилка", создана пользователем Svb, 6 июн 2018.

  1. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.061
    Симпатии:
    185
    Баллы:
    104
    Тогда всё в твоих руках :) Потом не забудь рассказать :)
  2. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.089
    Симпатии:
    23
    Баллы:
    29
    У меня это уже третий заход на эту задачу... -Yawn-
  3. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.245
    Симпатии:
    95
    Баллы:
    54
    Вова тут возникает вопрос, для развития мозга или его поклёва? Ты знаешь решение? И есть ли оно вообще?+ точно запросом а не СКД?
    --- Объединение сообщений, 7 июн 2018 ---
    Уточни у шефа он точно в запросе сделал?)
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.124
    Симпатии:
    951
    Баллы:
    204
    На абсолютно одинаковых строках нумерация запросом не работает, нужно еще поле, чтобы запросом можно было сформировать нумерацию.
    Поэтому твой шеф либо звиздит, либо не договаривает условия :)
    А то мне один тоже на собеседовании заливал про разузлование запросом без рекурсии на любое количество уровней вложенности :)
    Последнее редактирование: 7 июн 2018
  5. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.245
    Симпатии:
    95
    Баллы:
    54
    Я не удивлюсь если он это в СКД сделал)
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.543
    Симпатии:
    343
    Баллы:
    104
    Я тут подумал. Мне кажется я могу это сделать.
    --- Объединение сообщений, 8 июн 2018 ---
    Svb а сколька тебе денег за решение дадут? )
  7. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.245
    Симпатии:
    95
    Баллы:
    54
    Не не так,надо говорить у меня есть решение, если хотите его прочитать отправьте смс с текстом : ответ, на короткий номер ХХХХ

    Отправлено с моего PRA-TL10 через Tapatalk
  8. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.543
    Симпатии:
    343
    Баллы:
    104
    Не, ну надо же пределы суммы выяснить. Вдруг там шеф премию объявил 1000$ за решение, а я тут как лошара за 100 руб буду ответ продавать... :)
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.543
    Симпатии:
    343
    Баллы:
    104
    Ну как то так.
    Код:
    ВЫБРАТЬ
        "Яблоко" КАК Поле1
    ПОМЕСТИТЬ Таб1
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        "Груша"
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        "Яблоко"
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        "Банан"
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        "Груша" КАК Поле1
    ПОМЕСТИТЬ Таб2
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        "Яблоко"
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        "Груша"
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        "Яблоко"
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        "Яблоко"
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Таб1.Поле1 КАК Поле1,
        КОЛИЧЕСТВО(Таб1.Поле1) КАК Количество
    ПОМЕСТИТЬ Таб1_количество
    ИЗ
        Таб1 КАК Таб1
    
    СГРУППИРОВАТЬ ПО
        Таб1.Поле1
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Таб2.Поле1 КАК Поле1,
        КОЛИЧЕСТВО(Таб2.Поле1) КАК Количество
    ПОМЕСТИТЬ Таб2_количество
    ИЗ
        Таб2 КАК Таб2
    
    СГРУППИРОВАТЬ ПО
        Таб2.Поле1
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        1 + T.n КАК Номер,
        ВТ.Поле1
    ПОМЕСТИТЬ ВТ_НумерованнаяТаб1
    ИЗ
        (ВЫБРАТЬ
            11 * (t1.a - 1) + t2.b - 1 КАК n
        ИЗ
            (ВЫБРАТЬ 1 КАК a ОБЪЕДИНИТЬ
            ВЫБРАТЬ    2 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    3 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    4 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    5 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    6 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    7 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    8 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    9 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    10 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    11) КАК t1
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
            ВЫБРАТЬ    1 КАК b    ОБЪЕДИНИТЬ
            ВЫБРАТЬ    2 ОБЪЕДИНИТЬ
            ВЫБРАТЬ 3 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    4 ОБЪЕДИНИТЬ
            ВЫБРАТЬ 5 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    6 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    7 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    8 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    9 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    10 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    11) КАК t2
                ПО (ИСТИНА)) КАК T
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб1_количество КАК ВТ
            ПО (1 + T.n <= ВТ.Количество)
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        1 + T.n КАК Номер,
        ВТ.Поле1
    ПОМЕСТИТЬ ВТ_НумерованнаяТаб2
    ИЗ
        (ВЫБРАТЬ
            11 * (t1.a - 1) + t2.b - 1 КАК n
        ИЗ
            (ВЫБРАТЬ 1 КАК a ОБЪЕДИНИТЬ
            ВЫБРАТЬ    2 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    3 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    4 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    5 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    6 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    7 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    8 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    9 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    10 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    11) КАК t1
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
            ВЫБРАТЬ    1 КАК b    ОБЪЕДИНИТЬ
            ВЫБРАТЬ    2 ОБЪЕДИНИТЬ
            ВЫБРАТЬ 3 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    4 ОБЪЕДИНИТЬ
            ВЫБРАТЬ 5 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    6 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    7 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    8 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    9 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    10 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    11) КАК t2
                ПО (ИСТИНА)) КАК T
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб2_количество КАК ВТ
            ПО (1 + T.n <= ВТ.Количество)
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_НумерованнаяТаб1.Поле1 КАК Поле1,
        ВТ_НумерованнаяТаб2.Поле1 КАК Поле2
    ИЗ
        ВТ_НумерованнаяТаб1 КАК ВТ_НумерованнаяТаб1
            ПОЛНОЕ СОЕДИНЕНИЕ ВТ_НумерованнаяТаб2 КАК ВТ_НумерованнаяТаб2
            ПО ВТ_НумерованнаяТаб1.Поле1 = ВТ_НумерованнаяТаб2.Поле1
                И ВТ_НумерованнаяТаб1.Номер = ВТ_НумерованнаяТаб2.Номер
    
    --- Объединение сообщений, 8 июн 2018 ---
    Svb меня в заместители шефа возьмете? :)
    feanor_omsk нравится это.
  10. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.124
    Симпатии:
    951
    Баллы:
    204
    я боюсь представить себе текс запроса, если потребуется строк так 1000 обработать таким макаром :)
  11. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.543
    Симпатии:
    343
    Баллы:
    104
    да не.. на самом деле не на много. Не обязательно же всего две таблицы соединять.

    Вот с пределом 1000.. и т.д.
    Код:
    ВЫБРАТЬ
            100 * (t1.a - 1) + 10 * (t2.b - 1) + (t3.c - 1) КАК n
    ИЗ
            (ВЫБРАТЬ 1 КАК a ОБЪЕДИНИТЬ
            ВЫБРАТЬ    2 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    3 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    4 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    5 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    6 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    7 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    8 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    9 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    10
            ) КАК t1
            ,
            (ВЫБРАТЬ    1 КАК b    ОБЪЕДИНИТЬ
            ВЫБРАТЬ    2 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    3 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    4 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    5 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    6 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    7 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    8 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    9 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    10
            ) КАК t2
            ,
            (ВЫБРАТЬ    1 КАК c    ОБЪЕДИНИТЬ
            ВЫБРАТЬ    2 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    3 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    4 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    5 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    6 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    7 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    8 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    9 ОБЪЕДИНИТЬ
            ВЫБРАТЬ    10
            ) КАК t3
    
    --- Объединение сообщений, 8 июн 2018 ---
    если автоформатом не пользоваться то в 3 строки помещается
    Код:
    ВЫБРАТЬ
        100 * (t1.a - 1) + 10 * (t2.b - 1) + (t3.c - 1) КАК n
    ИЗ
        (ВЫБРАТЬ 1 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ОБЪЕДИНИТЬ ВЫБРАТЬ 10) КАК t1,
        (ВЫБРАТЬ 1 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ОБЪЕДИНИТЬ ВЫБРАТЬ 10) КАК t2,
        (ВЫБРАТЬ 1 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ОБЪЕДИНИТЬ ВЫБРАТЬ 10) КАК t3 
    
    Последнее редактирование: 8 июн 2018
  12. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.245
    Симпатии:
    95
    Баллы:
    54
    Так в запросе элементы прописаны.. а если новый элемент в таблицу добавить.. Арбуз нафиг всё рушит))
  13. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.543
    Симпатии:
    343
    Баллы:
    104
    В смысле?
    не понял комментария.
  14. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.245
    Симпатии:
    95
    Баллы:
    54
    ну насколько я понял a,b,c это у тебя Яблоко,Груша, Банан, так? т.е. в исходную таблицу добавить Арбуз и надо править запрос
  15. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.543
    Симпатии:
    343
    Баллы:
    104
    нет
    --- Объединение сообщений, 9 июн 2018 ---
    Это сделано для нумерации строк. Исходные таблицы не при чем. Добавляй хоть арбуз, хоть апельсин, хоть оба сразу. Там не надо ничего править.

Поделиться этой страницей