Имя: Пароль:
LIFE
Юмор
OFF: предельно просто поставлена задача - когда меня отпустит?
0 DES
 
01.09.16
10:10
есть звери и патроны, для каждого зверя свой патрон.
Звери:     Патроны:
Кабан1     Патрон1
Кабан2     Патрон2
Кабан2     Патрон2
Кабан2     Патрон4
Кабан3     Патрон4

В результате нужно получить
Кабан2   и Патрон4
Кабан3,  и Патрон4
Живые кабаны и оставшиеся патроны .
Как ?
1 Горогуля
 
01.09.16
10:13
выбрать звери.зверь, патроны.патрон из звери, патроны где (звери.зверь=Кабан2 и патроны.патрон=Патрон4) или (звери.зверь=Кабан3 и патроны.патрон=Патрон4)
2 Defender aka LINN
 
01.09.16
10:14
(0) "В результате нужно получить
Кабан2   и Патрон4"
И почему не "Кабан2     Патрон2"?
3 vicof
 
01.09.16
10:14
(0) Отсыпь
4 rrunover
 
01.09.16
10:15
если для каждого зверя свой патрон, почему кабан1 умер от патрон1, а кабан2 продержался аж Патрон2 - дважды (первый раз - осечка?), Патрон3 - видимо выпал, зато Патрон4 - убили уж двух кабанов...
5 Defender aka LINN
 
01.09.16
10:22
(4) Патрон4 - калибра 76мм. Осколочно-фугасный
6 Горогуля
 
01.09.16
10:24
да фиг на эти патроны. вы скажите, как будет выглядеть запрос что би отловить не входящие?
7 АНДР
 
01.09.16
10:30
//Убираем дубли
Выбрать Кабан, Патрон
Поместить _1
Из
Сгруппировать по Кабан, Патрон

//Получаем патроны
Выбрать Кабан, Патрон
Поместить _2
Из _1
Сгруппировать по Патрон Имеющие (Количество(Кабан)) > 1

//Через Соединение или Где получаем кабанов с патронами
8 АНДР
 
01.09.16
10:31
Упс, во втором Кабан лишний в Выбрать.
9 DES
 
02.09.16
14:24
Это две разные таблицы, кабаны и патроны.
(местным петросянам - оставшиеся патроны)
10 Fish
 
02.09.16
14:26
(9) А "входящие" это что? Или "Не входящие"?
11 DES
 
02.09.16
14:32
(9) входящие - это кабаны со входящими в них патронами
12 DES
 
02.09.16
14:32
не входящие - это патроны которые не вошли в кабанов
13 Chameleon1980
 
02.09.16
14:50
а нет такого, что есть патроны не для кого?
(для рыбок)

а то просто если есть база и в ней патроны, то они уже для кого-то

или мы конкретно про кабанов?
14 Chameleon1980
 
02.09.16
14:52
тут получается нужно найти патроны не только для одного зверя.
Так чтоль? по условию если еще раз посмотреть.
15 DES
 
02.09.16
14:55
нет, нужно найти патроны которые не истрачены и кабанов которые уцелели.

А уцелели они потому что им не хватило их патронов
16 Chameleon1980
 
02.09.16
15:06
ага т.е. есть таблица с типами и кол-вом патронов
и, видимо, таблица с кабанами и их кол-влм.
так?
17 Горогуля
 
02.09.16
15:07
оставшиеся патроны... кажется, до меня начинает доходить. таблица патронов - это какой-то аналог таблицы РН, в которой каждая запись - очередные .Остатки()?
18 Chameleon1980
 
02.09.16
15:07
(17) во-во

просто в 0 про количества ни слова

а тут проясняется вроде как
19 Горогуля
 
02.09.16
15:11
Кабан1     Патрон1 - ага, остался 1 кабан, 1 патрон вошёл. ранил
Кабан2     Патрон2 - прибежал второй кабан, два патрона вошли. убил?
Кабан2     Патрон2 - видимо, перкур
Кабан2     Патрон4 - а это дуплетом
Кабан3     Патрон4 - прибежал третий кабан, но патронов осталось 4. промах

всё предельно ясно. кристальная ясность, недостижимая в реляционных БД
20 DES
 
02.09.16
15:32
предельно просто поставлена задача.
Количество всегда 1.
Есть типы кабанов и патронов.
А примере было
3 кабана 2-го типа и
1 кабан 3-го типа
по этому стаду пульнули 2 патрона 2-го типа (остальными пулять - религия запрещает)
итого
Убежали 2 кабана:
1 кабан 2-го типа (ему не хватило патрона)
1 кабан 3-го типа (по нему не стреляли)
осталось патронов
2 патрона 4-го типа (потому что кабаны 4-го типа не пришли на войну)
21 Chameleon1980
 
02.09.16
15:37
(20) короче пятнично, весьма.
удачно с кабанами получилось :)
22 Лефмихалыч
 
02.09.16
15:37
(20) из чего следует, что какие-то кабаны убежали? На что влияет тип кабана?

из чего следует, что " пульнули 2 патрона 2-го типа"? В таблице я вижу патроны 1 и 4.
23 Лефмихалыч
 
02.09.16
15:38
ветка о вреде алкоголя и наркотиков в фермерском хозяйстве...
24 Chameleon1980
 
02.09.16
15:38
куда кабан первого типа делася?
25 Лефмихалыч
 
02.09.16
15:38
ил просто - о вреде безотносительно к области хозяйственной деятельности
26 Горогуля
 
02.09.16
15:38
где вы берёте эти чудесные таблетки, расширяющие сознание?
27 Лефмихалыч
 
02.09.16
15:38
(24) увернулся, видимо
28 Chameleon1980
 
02.09.16
15:39
(23) :)
29 Горогуля
 
02.09.16
15:39
(24) а об этом нам расскажет ЗАПРОС
30 Лефмихалыч
 
02.09.16
15:39
предельно просто поставлена задача, блять...
31 Горогуля
 
02.09.16
15:40
ааа... я догадался! вот ЗАПРОС: "а есь ещё?"
32 Chameleon1980
 
02.09.16
15:40
что-то я давно так не смеялся.
ну честно
33 Горогуля
 
02.09.16
15:41
однако, автора вторые сутки накрывает
34 Лефмихалыч
 
02.09.16
15:41
(31) вот так, я думаю:
   Запрос = Новый Запрос(
   "ПЕТЬКА
   |   !
   |ГДЕ
   |   Еще патроны?!");
35 Лефмихалыч
 
02.09.16
15:42
+(34) или "ГДЕ Кабан1 и Кабан4"
36 piter3
 
02.09.16
15:45
(33) так кабанов 4,вот они и не отпускают автора. Конвеер однако
37 Mauser
 
02.09.16
15:46
ИНАЧЕ ЛОЖЬ КОНЕЦ
?
38 Лефмихалыч
 
02.09.16
15:47
(37) ИНАЧЕ ЛОЖЬ ЕСТЬ КОНЕЦ И ВОИСТЕНУ
39 Chameleon1980
 
02.09.16
15:48
конец кабанам
40 Бледно Золотистый
 
02.09.16
15:49
Народ, я кажется начинаю понимать.

Соответствие такое:

Кабан1     Патрон1
Кабан2     Патрон2
Кабан3     Патрон3
Кабан4     Патрон4  

Отсюда из (0) не удовлетворяют ему
Кабан2     Патрон4
Кабан3     Патрон4
41 Горогуля
 
02.09.16
15:50
(40) смотри не увлекись
42 Chameleon1980
 
02.09.16
15:51
тогда 3 таблицы

кабаны, патроны, соответствия
43 2S
 
02.09.16
15:51
надо сначала пыхнуть...
44 Chameleon1980
 
02.09.16
15:52
и что-то кабаны какие-то вымирающие (и так, а еще стрелять собрались). Каждого типа (как я понял) по одной штуке.
45 DES
 
02.09.16
15:52
(40) ну вот!
46 Chameleon1980
 
02.09.16
15:53
(45) данные в каком виде-то изначально?
таб. соответствий-то есть? что-то не оговаривалось про это
47 Лефмихалыч
 
02.09.16
15:53
(43) главное это делать на сервере без контекста, чтобы сборщик мусора не застукал
48 Chameleon1980
 
02.09.16
15:55
(46) или у кабана реквизит патрон ?
ну или у патрона реквизит Кабан
49 Лефмихалыч
 
02.09.16
15:55
(40) (45) это левое соединение "где есть null".

Но это не интересно, по этому продолжаем дискотеку!
50 DES
 
02.09.16
15:55
(46) тип - это и есть соответствие же.
51 Лефмихалыч
 
02.09.16
15:56
период ясного сознания был мимолетным...
52 Ёпрст
 
02.09.16
15:57
(50) че за тип ?
53 Лефмихалыч
 
02.09.16
15:58
(52) мутный тип
54 Chameleon1980
 
02.09.16
15:58
(50) не понял.

похоже в вашей то голове есть еще что-то, про что не было сказано ?
55 Ёпрст
 
02.09.16
15:58
Как знешь, что патрон1 соответствует кабан1 ?
Где эта связь хранится у тебя и как ?
56 Chameleon1980
 
02.09.16
15:59
(55) вот - про то-то и нужно знать.
57 Лефмихалыч
 
02.09.16
15:59
(54) скорее в крови, чем к голове
58 DES
 
02.09.16
15:59
(54) ну какие вы далекие на ассоциации.
кабан 1 типа кабан1 - ну какой ему подходит патрон их (патрон1, патрон2, патрон3)?
ну явно же не 3 типа
59 Горогуля
 
02.09.16
16:00
(55) предельно просто поставлена задача.
(остальными пулять - религия запрещает)
60 Горогуля
 
02.09.16
16:01
(58) Патрон0.9 войдёт? есть погрешность какая-то?
61 DES
 
02.09.16
16:01
(55)  вот видишь и ты это знаешь
62 Chameleon1980
 
02.09.16
16:01
а если кабан1 еще маленький и его зовут кабанчик1 ему что как-то только патрончик1 подойдет.

как ты запросу это объяснишь? по именам?
63 Горогуля
 
02.09.16
16:01
+(60) и чёрненький патрон. только для ворон?
64 Лефмихалыч
 
02.09.16
16:03
пятница удалась, спасибо DES
65 Горогуля
 
02.09.16
16:03
усложняем задачу. на сцене появляется лесник, потрясая ремнём1, ремнём2 и ремнём3
66 DES
 
02.09.16
16:03
(62) кабан - это же абстракция. (на самом деле там ноусэры)
67 Smallrat
 
02.09.16
16:04
(40)

ВЫБРАТЬ
    Таблица.Кабан,
    Таблица.Патрон
ПОМЕСТИТЬ ВТ_Таблица
ИЗ
    &Таблица КАК Таблица
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаСоответствия.Кабан,
    ТаблицаСоответствия.Патрон
ПОМЕСТИТЬ ВТ_ТаблицаСоответствия
ИЗ
    &ТаблицаСоответствия КАК ТаблицаСоответствия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Таблица.Кабан,
    Таблица.Патрон
ИЗ
    ВТ_Таблица КАК Таблица
ГДЕ
    НЕ (Таблица.Кабан, Таблица.Патрон) В
                (ВЫБРАТЬ
                    ТаблицаСоответствия.Кабан,
                    ТаблицаСоответствия.Патрон
                ИЗ
                    ВТ_ТаблицаСоответствия КАК ТаблицаСоответствия)
68 DES
 
02.09.16
16:05
(67) это разные таблицы, это для наглядности они рядом
69 Smallrat
 
02.09.16
16:07
(68) ну ты ж сказал в (45) "ну вот!", а в (40) вроде как имелись ввиду таблицы
70 Smallrat
 
02.09.16
16:08
то есть в (40) подрахзумевалось что в условии одна таблица и еще одна таблица соответствия
71 Dmitry77
 
02.09.16
16:08
я так  понял есть 3 таблицы
1 кабаны
2 патроны
3 соответсвие кабаныпатроны

выбираешь кабанов:

выбрать
кабан
1 как флаг
из кабаны

обеденить
выбрать
кабан
2 как флаг
из кабаныпатроны
сгрупировать (кабан, сумма ( флаг))
где сумма ( флаг) = 1

аналогично выбираешь патроны...
72 azernot
 
02.09.16
16:08
ВЫБРАТЬ
    "Кабан1" КАК ИмяЗверя,
    1 КАК ТипЗверя
ПОМЕСТИТЬ Звери

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Кабан2",
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Кабан2",
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Кабан2",
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Кабан3",
    3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Патрон1" КАК ИмяПатрона,
    1 КАК ТипПатрона
ПОМЕСТИТЬ Патроны

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Патрон2",
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Патрон2",
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Патрон4",
    4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Патрон4",
    4
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеТипы.Тип КАК Тип,
    ЕСТЬNULL(КоличествоЗверейПоТипам.Количество, 0) КАК КоличествоЗверей,
    ЕСТЬNULL(КоличествоПатроновПоТипам.Количество, 0) КАК КоличествоПатронов
ПОМЕСТИТЬ СоотношениеКоличествПоТипам
ИЗ
    (ВЫБРАТЬ
        Звери.ТипЗверя КАК Тип
    ИЗ
        Звери КАК Звери
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        Патроны.ТипПатрона
    ИЗ
        Патроны КАК Патроны) КАК ВсеТипы
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Звери.ТипЗверя КАК ТипЗверя,
            КОЛИЧЕСТВО(Звери.ИмяЗверя) КАК Количество
        ИЗ
            Звери КАК Звери
        
        СГРУППИРОВАТЬ ПО
            Звери.ТипЗверя) КАК КоличествоЗверейПоТипам
        ПО ВсеТипы.Тип = КоличествоЗверейПоТипам.ТипЗверя
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Патроны.ТипПатрона КАК ТипПатрона,
            КОЛИЧЕСТВО(Патроны.ИмяПатрона) КАК Количество
        ИЗ
            Патроны КАК Патроны
        
        СГРУППИРОВАТЬ ПО
            Патроны.ТипПатрона) КАК КоличествоПатроновПоТипам
        ПО ВсеТипы.Тип = КоличествоПатроновПоТипам.ТипПатрона
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    "Звери" КАК ТипВыборки,
    Звери.ИмяЗверя КАК ИмяЭлемента,
    СоотношениеКоличествПоТипам.КоличествоЗверей - СоотношениеКоличествПоТипам.КоличествоПатронов КАК КоличествоОставщихся
ИЗ
    СоотношениеКоличествПоТипам КАК СоотношениеКоличествПоТипам
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Звери КАК Звери
        ПО СоотношениеКоличествПоТипам.Тип = Звери.ТипЗверя
ГДЕ
    СоотношениеКоличествПоТипам.КоличествоЗверей > СоотношениеКоличествПоТипам.КоличествоПатронов

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
    "Патроны",
    Патроны.ИмяПатрона,
    СоотношениеКоличествПоТипам.КоличествоПатронов - СоотношениеКоличествПоТипам.КоличествоЗверей
ИЗ
    СоотношениеКоличествПоТипам КАК СоотношениеКоличествПоТипам
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Патроны КАК Патроны
        ПО СоотношениеКоличествПоТипам.Тип = Патроны.ТипПатрона
ГДЕ
    СоотношениеКоличествПоТипам.КоличествоПатронов > СоотношениеКоличествПоТипам.КоличествоЗверей
ИТОГИ ПО
    ТипВыборки


На выходе

ТипВыборки    ИмяЭлемента    КоличествоОставщихся
Звери        
    Кабан2    1
    Кабан3    1
Патроны        
    Патрон4    2
73 Ёпрст
 
02.09.16
16:09
(58) Причем тут ассоциации ? Таблица соответствий есть или нет ?
Или Пуля, это реквизит кабана или еще как ?
74 Chameleon1980
 
02.09.16
16:12
у нас количество кабанов и патронов динамическое?

полюбому как-то жеж их вязать нужно.

либо через реквизит одного или другого, либо через стороннюю таблицу...

это для ТС
75 Бледно Золотистый
 
02.09.16
16:25
ВЫБРАТЬ
    ЕСТЬNULL(ГруппыКабанов.Кабаны, "") КАК Кабаны,
    ЕСТЬNULL(ГруппыКабанов.Количество, 0) - ЕСТЬNULL(ГруппыПатронов.Количество, 0) КАК Разница,
    ЕСТЬNULL(ГруппыПатронов.Патроны, "") КАК Патроны
ПОМЕСТИТЬ вт_результат
ИЗ
    (ВЫБРАТЬ
        вт_кабаны.Кабаны КАК Кабаны,
        СУММА(1) КАК Количество,
        ЕСТЬNULL(вт_соответствие.Патроны, "") КАК ПодходящийПатрон
    ИЗ
        вт_кабаны КАК вт_кабаны
            ЛЕВОЕ СОЕДИНЕНИЕ вт_соответствие КАК вт_соответствие
            ПО вт_кабаны.Кабаны = вт_соответствие.Кабаны
    
    СГРУППИРОВАТЬ ПО
        вт_кабаны.Кабаны,
        ЕСТЬNULL(вт_соответствие.Патроны, "")) КАК ГруппыКабанов
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            вт_патроны.Патроны КАК Патроны,
            СУММА(1) КАК Количество
        ИЗ
            вт_патроны КАК вт_патроны
        
        СГРУППИРОВАТЬ ПО
            вт_патроны.Патроны) КАК ГруппыПатронов
        ПО ГруппыКабанов.ПодходящийПатрон = ГруппыПатронов.Патроны
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВложенныйЗапрос.КабаныВыжили,
    ВложенныйЗапрос.ПатроновОсталось,
    ВложенныйЗапрос.Количество
ИЗ
    (ВЫБРАТЬ
        Выжившие.КабаныВыжили КАК КабаныВыжили,
        Выжившие.Количество КАК Количество,
        NULL КАК ПатроновОсталось
    ИЗ
        (ВЫБРАТЬ
            вт_результат.Кабаны КАК КабаныВыжили,
            вт_результат.Разница КАК Количество
        ИЗ
            вт_результат КАК вт_результат
        ГДЕ
            вт_результат.Разница > 0) КАК Выжившие
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        NULL,
        Остатки.Количество,
        Остатки.ПатроновОсталось
    ИЗ
        (ВЫБРАТЬ
            вт_результат.Патроны КАК ПатроновОсталось,
            -вт_результат.Разница КАК Количество
        ИЗ
            вт_результат КАК вт_результат
        ГДЕ
            вт_результат.Разница < 0) КАК Остатки) КАК ВложенныйЗапрос
76 azernot
 
02.09.16
16:28
Если есть какой-то уникальный идентификационный признак зверей патронов, и нужно вывести именно перечень оставшихся/неиспользованных с идентификационным признаком, то запрос слегка модифицируется:


ВЫБРАТЬ
    "Кабан1" КАК ИмяЗверя,
    1 КАК ПорядковыйНомер,
    1 КАК ТипЗверя
ПОМЕСТИТЬ Звери

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Кабан2",
    2,
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Кабан2",
    3,
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Кабан2",
    4,
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Кабан3",
    5,
    3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Патрон1" КАК ИмяПатрона,
    10 КАК ПорядковыйНомер,
    1 КАК ТипПатрона
ПОМЕСТИТЬ Патроны

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Патрон2",
    20,
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Патрон2",
    30,
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Патрон4",
    40,
    4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Патрон4",
    50,
    4
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеТипы.Тип КАК Тип,
    ЕСТЬNULL(КоличествоЗверейПоТипам.Количество, 0) КАК КоличествоЗверей,
    ЕСТЬNULL(КоличествоПатроновПоТипам.Количество, 0) КАК КоличествоПатронов
ПОМЕСТИТЬ СоотношениеКоличествПоТипам
ИЗ
    (ВЫБРАТЬ
        Звери.ТипЗверя КАК Тип
    ИЗ
        Звери КАК Звери
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        Патроны.ТипПатрона
    ИЗ
        Патроны КАК Патроны) КАК ВсеТипы
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Звери.ТипЗверя КАК ТипЗверя,
            КОЛИЧЕСТВО(Звери.ИмяЗверя) КАК Количество
        ИЗ
            Звери КАК Звери
        
        СГРУППИРОВАТЬ ПО
            Звери.ТипЗверя) КАК КоличествоЗверейПоТипам
        ПО ВсеТипы.Тип = КоличествоЗверейПоТипам.ТипЗверя
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Патроны.ТипПатрона КАК ТипПатрона,
            КОЛИЧЕСТВО(Патроны.ИмяПатрона) КАК Количество
        ИЗ
            Патроны КАК Патроны
        
        СГРУППИРОВАТЬ ПО
            Патроны.ТипПатрона) КАК КоличествоПатроновПоТипам
        ПО ВсеТипы.Тип = КоличествоПатроновПоТипам.ТипПатрона
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Звери.ТипЗверя КАК ТипЗверя,
    Звери.ИмяЗверя КАК ИмяЗверя,
    Звери.ПорядковыйНомер КАК ПорядковыйНомер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Звери1.ПорядковыйНомер) КАК НумерацияПоТипу
ПОМЕСТИТЬ ЗвериСНумерациейВнутриТипа
ИЗ
    Звери КАК Звери
        ЛЕВОЕ СОЕДИНЕНИЕ Звери КАК Звери1
        ПО Звери.ТипЗверя = Звери1.ТипЗверя
            И Звери.ИмяЗверя = Звери1.ИмяЗверя
            И Звери.ПорядковыйНомер <= Звери1.ПорядковыйНомер

СГРУППИРОВАТЬ ПО
    Звери.ИмяЗверя,
    Звери.ТипЗверя,
    Звери.ПорядковыйНомер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Патроны.ТипПатрона КАК ТипПатрона,
    Патроны.ИмяПатрона КАК ИмяПатрона,
    Патроны.ПорядковыйНомер КАК ПорядковыйНомер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Патроны1.ПорядковыйНомер) КАК НумерацияПоТипу
ПОМЕСТИТЬ ПатроныСНумерациейВнутриТипа
ИЗ
    Патроны КАК Патроны
        ЛЕВОЕ СОЕДИНЕНИЕ Патроны КАК Патроны1
        ПО Патроны.ТипПатрона = Патроны1.ТипПатрона
            И Патроны.ИмяПатрона = Патроны1.ИмяПатрона
            И Патроны.ПорядковыйНомер <= Патроны1.ПорядковыйНомер

СГРУППИРОВАТЬ ПО
    Патроны.ИмяПатрона,
    Патроны.ТипПатрона,
    Патроны.ПорядковыйНомер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    "Звери" КАК ТипВыборки,
    ЗвериСНумерациейВнутриТипа.ИмяЗверя КАК ИмяЭлемента,
    ЗвериСНумерациейВнутриТипа.ПорядковыйНомер
ИЗ
    СоотношениеКоличествПоТипам КАК СоотношениеКоличествПоТипам
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗвериСНумерациейВнутриТипа КАК ЗвериСНумерациейВнутриТипа
        ПО СоотношениеКоличествПоТипам.Тип = ЗвериСНумерациейВнутриТипа.ТипЗверя
            И (СоотношениеКоличествПоТипам.КоличествоЗверей - СоотношениеКоличествПоТипам.КоличествоПатронов >= ЗвериСНумерациейВнутриТипа.НумерацияПоТипу)
ГДЕ
    СоотношениеКоличествПоТипам.КоличествоЗверей > СоотношениеКоличествПоТипам.КоличествоПатронов

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
    "Патроны",
    ПатроныСНумерациейВнутриТипа.ИмяПатрона,
    ПатроныСНумерациейВнутриТипа.ПорядковыйНомер
ИЗ
    СоотношениеКоличествПоТипам КАК СоотношениеКоличествПоТипам
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПатроныСНумерациейВнутриТипа КАК ПатроныСНумерациейВнутриТипа
        ПО СоотношениеКоличествПоТипам.Тип = ПатроныСНумерациейВнутриТипа.ТипПатрона
            И (СоотношениеКоличествПоТипам.КоличествоПатронов - СоотношениеКоличествПоТипам.КоличествоЗверей >= ПатроныСНумерациейВнутриТипа.НумерацияПоТипу)
ГДЕ
    СоотношениеКоличествПоТипам.КоличествоПатронов > СоотношениеКоличествПоТипам.КоличествоЗверей


На выходе
ТипВыборки    ИмяЭлемента    ПорядковыйНомер
Звери    Кабан2    4
Звери    Кабан3    5
Патроны    Патрон4    40
Патроны    Патрон4    50
77 Изобретатель Велосип
 
02.09.16
16:45
Зачем вам запросы - не проще ли через RegExp выдрать цифры и сравнить - если не совпали, то возвращать строку - если совпали - переход на следующую ?
78 azernot
 
02.09.16
16:49
(77) Изначально тема сабжа указывала на то, что решение нужно через запрос.... Ну или у меня уже глюки.
79 Chameleon1980
 
02.09.16
17:01
(78) именно запрос тс хотел
80 Изобретатель Велосип
 
02.09.16
17:25
Как в запросе из строки вырезать число ?
1С даже приведение типов в запросе не умеет.
81 Ёпрст
 
02.09.16
17:34
(80) через подстрока и case
82 Горогуля
 
02.09.16
17:35
(80) преобразование она не умеет. а приводить приводит ;)
83 Изобретатель Велосип
 
02.09.16
17:52
(81) Тогда в чём проблема ?
SELECT Animal,Armor From DataTable WHERE SubString(Animal,6,1)<>SubString(Armor,7,1);
84 azernot
 
02.09.16
18:07
(83) Проблема, судя по всему, совершенно не в том, чтобы распарсить строку-наименование. А в том, чтобы получит перечень несовпадений по признакам.

Ну например, есть у тебя таблица "Недостачи" и "Излишки", с набором товаров. Тебе нужно получить таблиц "Окончательные недостачи и излишки без учёта пересортицы". При этом под пересортицей ты понимаешь совпадение элементов из Недостач и Излишков по формальному признаку, например по цене...

Впрочем, ТС куда-то пропал, может быть я чрезмерно усложняю.
85 Изобретатель Велосип
 
02.09.16
18:23
(84) Только в твоей постановке в двух колонках будут "одинаковые звери".
Сопоставление же по цене - это не очень хорошее решение - понятно, что "умный" кассир при продаже товара выполнит поиск по цене и найдёт первый попавшийся товар, но их за это нужно наказывать.
86 Рэйв
 
02.09.16
18:30
была такая  уже задача  вот на днях:-)
Держи работающий пример, может не одхои идеально, но идею сообразишь, я думаю
https://yadi.sk/d/WAhLO8rSuVmVw
87 azernot
 
02.09.16
18:30
(85) Звери будут не одинаковые. "Сырок творожный ванильный" и "Сырок творожный ягодный" - всё же разные звери.
Я лишь привёл пример. Формальных признаков может быть больше. Кроме цены, это может быть например, Родитель "Сырки творожные".

"Умный" кассир в ряде случаев, цену на товар знать не знает, а узнаёт её уже после того как выполнил поиск товара.
Но как говорится, мухи отдельно, а кассиры отдельно. Наказывать кассиров за пересорт - это одно, а убытки от несвёрнутых в пересортицу недостч/излишков - это другое.
88 Рэйв
 
02.09.16
18:31
*не очень идеально :-)
89 Изобретатель Велосип
 
02.09.16
18:34
(87) Я не говорю, что они "одно и то же" - просто обе колонки будут из одного справочника.
В примере "зверь" и "оружие" - разные сущности - между ними установлено соответствие.
При сборе пересортицы мы имеем соответствие между двумя "зверями".
90 azernot
 
02.09.16
18:37
(89) А есть принципиальная разница? :)
Понятно же, что в сабже задача абстрактаная. Некие две таблицы.. А из одного они справочника, из двух, или ещё как получены - не важно.
91 Изобретатель Велосип
 
02.09.16
18:41
(90) Принципиальная разница в том, что A[i]<->A[j] => A[j]<->A[i] то есть соответствие коммутативно.
92 Рэйв
 
02.09.16
18:44
(91)И что? Я щас тебе из 1С такого кода накидаю - офигеешь.
Так что не умничай тут
93 azernot
 
02.09.16
18:49
(92) >Так что не умничай тут
Ну а что, сработало..
Я вот вообще не понял, о чём он...
94 Изобретатель Велосип
 
02.09.16
18:58
(92) Накидывают обычно другой материал ... и лопатой.
95 Рэйв
 
02.09.16
19:20
(94)Очень смешно:-)
96 Рэйв
 
02.09.16
19:21
(93)Я подозреваю, что ОН САМ не очень понял, о чем это он:-)
97 DES
 
02.09.16
19:28
пусть кабан и патрон как то связываются сами
ЗАПРОС * из * где кабан=патрон  и т.д.
AdBlock убивает бесплатный контент. 1Сергей