![]() |
|
v7: Помогите с прямым запросом | ☑ | ||
---|---|---|---|---|
0
Андрей_Андреич
naïve
13.04.15
✎
12:35
|
Имеется табличка с полями Товар, Состав, МожноСобрать.
Хочется для каждого из Товар определить минимум МожноСобрать. Как? Чую что одной фразой. Заранее благодарен. |
|||
1
trad
13.04.15
✎
12:51
|
select Товар, min(МожноСобрать) from Таблица group by Товар
|
|||
2
Андрей_Андреич
naïve
13.04.15
✎
12:57
|
(1) В том и дело что не срабатывает - сам диву даюсь
|
|||
3
Ёпрст
гуру
13.04.15
✎
12:57
|
ну или так еще, если и состав нужен
select Таблица.Товар, Таблица.Состав, (select min(Таб.МожноСобрать) from Таблица as Таб where Таб where Таб.Товар = Таблица.Товар) as МожноСобрать from Таблица as таблица |
|||
4
Ёпрст
гуру
13.04.15
✎
12:58
|
ну там еще гроупбай воткнешь в подзапрос
|
|||
5
Андрей_Андреич
naïve
13.04.15
✎
13:00
|
(3) Состав не нужен - просто исходя из норм определяю наличие/норму для каждого из комплектующих. Потом задача выбрать минимум.
Я уже несколько лет назад мудрил - не получилось. Сейчас вернулся к этому блоку и опять не работает. Чудеса короче. |
|||
6
trad
13.04.15
✎
13:04
|
что значит не срабатывает? ошибка, неверный результат? что конкретно?
|
|||
7
фобка
13.04.15
✎
13:06
|
Select т.товар, min(т.можнособрать) from таб т group by т.товар
|
|||
8
Андрей_Андреич
naïve
13.04.15
✎
13:06
|
(6) неверный результат. в наборе из двух записей с МожноСобрать = 0 и МожноСобрать = 3 что Min, что Max возвращает 3
|
|||
9
фобка
13.04.15
✎
13:06
|
(1) о это уже было
|
|||
10
фобка
13.04.15
✎
13:08
|
(8) null может?
|
|||
11
trad
13.04.15
✎
13:08
|
(8) значит там не 0, а null
|
|||
12
Ёпрст
гуру
13.04.15
✎
13:08
|
(8) ты видишь разный товар с одинаковым представлением. Выведи, хотя бы код его или любой другой признак.
|
|||
13
фобка
13.04.15
✎
13:09
|
(11) тут я уже первый)
|
|||
14
trad
13.04.15
✎
13:13
|
(13) 1:1
|
|||
15
trad
13.04.15
✎
13:14
|
select Товар, min(isnull(МожноСобрать,0)) from Таблица group by Товар
|
|||
16
Андрей_Андреич
naïve
13.04.15
✎
13:16
|
(15) Ура - спасибо!
|
|||
17
Андрей_Андреич
naïve
13.04.15
✎
13:17
|
(15) Вдогонку - что такое isnull?
Совсем совесть потерял :( |
|||
18
trad
13.04.15
✎
13:18
|
(17)
isnull(МожноСобрать,0) <==> case when МожноСобрать is null then 0 then МожноСобрать end |
|||
19
trad
13.04.15
✎
13:19
|
опечатка
case when МожноСобрать is null then 0 else МожноСобрать end |
|||
20
Андрей_Андреич
naïve
13.04.15
✎
13:20
|
(18) То есть то что я считал нулем было null. печально - извилины все хуже скрипят
|
|||
21
Ёпрст
гуру
13.04.15
✎
13:32
|
(20) null он и есть null... Смотришь чем ? 1с-иной ?
|
|||
22
Андрей_Андреич
naïve
13.04.15
✎
13:32
|
(21) угу
|
|||
23
Эльниньо
13.04.15
✎
15:55
|
ТекстЗапроса = "
|SELECT |right(Рег.ПозицияДокумента,9) as [Док $Документ], |Рег.ВидДокумента as Док_вид, |Рег.Товар as [Товар $Справочник.Номенклатура], //... |FROM $РегистрОбороты.Продажи(:НачДата,:КонДата, Документ) as Рег //... Нуно вытянуть из Товар реквизит "Матрица". Подозреваю что, где то так: // |INNER JOIN //|LEFT JOIN но туплю Памажите кто может. Сам я не местный... |
|||
24
trad
13.04.15
✎
16:14
|
select
... $Номенклатура.Матрица FROM $РегистрОбороты.Продажи(:НачДата,:КонДата, Документ) LEFT JOIN $Справочник.Номенклатура Номенклатура (nolock) on Номенклатура.id = Рег.Товар |
|||
25
trad
13.04.15
✎
16:15
|
с переносом
select ... $Номенклатура.Матрица FROM $РегистрОбороты.Продажи(:НачДата,:КонДата, Документ) LEFT JOIN $Справочник.Номенклатура Номенклатура (nolock) on Номенклатура.id = Рег.Товар |
|||
26
Эльниньо
13.04.15
✎
16:35
|
|Рег.КолвоБазОборот Количество,
|$Номенклатура.Матрица |FROM $РегистрОбороты.Продажи(:НачДата,:КонДата, Документ) |LEFT JOIN $Справочник.Номенклатура Номенклатура (nolock) on Номенклатура.id = Рег.Товар |WHERE 1=1 and 2=2 and 3=3 and 4=4"; Incorrect syntax near the keyword 'LEFT'. |
|||
27
leshikkam
13.04.15
✎
16:43
|
|FROM $РегистрОбороты.Продажи(:НачДата,:КонДата, Документ) as Рег
|
|||
28
Эльниньо
13.04.15
✎
16:57
|
Тьху ты! Потерял где-то по дороге.
Спасибо |
|||
29
Эльниньо
13.04.15
✎
16:58
|
Ещё пичалька.
Реквизит Матрица - периодический |
|||
30
Ёпрст
гуру
13.04.15
✎
17:04
|
Гы..
|
|||
31
Ёпрст
гуру
13.04.15
✎
17:05
|
Если скуль, смотреть ПоследнееЗначение.
Если дбф - писать ручонками соединение к 1sconst |
|||
32
Эльниньо
13.04.15
✎
17:07
|
Скуль.
Как получить и присобачить значение на КонДата присобаченного джойном реквизита? |
|||
33
Ёпрст
гуру
13.04.15
✎
17:08
|
и будет у тебя
|Рег.КолвоБазОборот Количество, |$ПоследнееЗначение.Номенклатура.матрица(Рег.Товар,:ВыбДата) |FROM $РегистрОбороты.Продажи(:НачДата,:КонДата, Документ) |WHERE 1=1 and 2=2 and 3=3 and 4=4"; $ПоследнееЗначение.{<ИмяСправочника> | Константа}.{<ИмяРеквизита | ИмяКонстанты>}( <ИдОбъекта>, <Дата>[, <Время>[, <ИДДокумента>]] |
|||
34
Ёпрст
гуру
13.04.15
✎
17:09
|
И джойнить номенклатуру не надо будет..
ЗЫ: внизу - справка по синтаксису.. |
|||
35
trad
13.04.15
✎
17:10
|
as Рег
|
|||
36
Эльниньо
13.04.15
✎
17:11
|
Йййееессс!!!
Спасибо!!! |
|||
37
trad
13.04.15
✎
17:12
|
и в параметрах регистра :КонДата~
иначе обороты за КонДата не попадут |
|||
38
trad
13.04.15
✎
17:13
|
если конечно при установке параметра она не +1
|
|||
39
Эльниньо
13.04.15
✎
17:14
|
Спс
|
|||
40
Эльниньо
15.04.15
✎
11:20
|
Аппетит приходит во время еды.
Слышал краем уха, что РСом можно подцепится к другой базе и сделать запрос. Можно ли вымученный с вашей помощью запрос сделать к чужой базе? |
|||
41
Ёпрст
гуру
15.04.15
✎
11:25
|
Как нефик делать.. даже , типизацию, при желании
|
|||
42
Андрей_Андреич
naïve
15.04.15
✎
11:36
|
(41) А вот еще вопросик - похоже, вложенные Group By невозможны? Который раз на это натыкаюсь.
|
|||
43
Эльниньо
15.04.15
✎
11:38
|
(41) Намекни
|
|||
44
Ёпрст
гуру
15.04.15
✎
11:40
|
(42) всё можно
|
|||
45
Ёпрст
гуру
15.04.15
✎
11:42
|
(43) если на том же скуле - то просто в тексте запроса указывай имя схемы имя базы имя таблицы через точку, если база на другом скуль сервере - то просто прилинкуй его и всё тоже самое.
|
|||
46
Ёпрст
гуру
15.04.15
✎
11:42
|
(42) и.. что ты понимаешь под вложенными гроупбай ?
В подзапросе ? можно |
|||
47
Андрей_Андреич
naïve
15.04.15
✎
11:43
|
Ни разу не получалось - все удивлялся. Может что не так делаю. Из-за этого у меня кучу мест через ж написано с записью в промежуточные таблицы. Попробую простенький сварганить еще разок.
|
|||
48
Эльниньо
15.04.15
✎
11:47
|
(45) Что-то типа:
|Base1.Рег.КолвоБазОборот Количество, |Base1.$ПоследнееЗначение.Номенклатура.матрица(Рег.Товар,:ВыбДата) |FROM Base1.$РегистрОбороты.Продажи(:НачДата,:КонДата, Документ) ? |
|||
49
Ёпрст
гуру
15.04.15
✎
12:20
|
да
|
|||
50
Ёпрст
гуру
15.04.15
✎
12:20
|
только вот, не совсем так :)
Чтоб работали виртуальные таблицы, нужно мд присоединять и саму базу |
|||
51
Эльниньо
15.04.15
✎
12:39
|
Да. Чёта ругается.
Как мд и базу присобачить? |
|||
52
trad
15.04.15
✎
13:49
|
(50) имхо ты с присоединенной типизацией погорячился
|
|||
53
trad
15.04.15
✎
13:51
|
(51) бд.ПрисоединитьИБ(ПутьСоСлешем)
рс.УстБД(бд) |
|||
54
Эльниньо
15.04.15
✎
13:53
|
Кароче сделал.
Ёпрсту спс за пинок в верном направлении Уроды сделали обрезание по самое некуда. Типа тормозит потому как слишком большая. Ага - 5Гб - охренеть как огромная база. |
|||
55
Ёпрст
гуру
15.04.15
✎
15:00
|
(52) да не, работать будет, если есть по чему синхронизировать.
|
|||
56
Ёпрст
гуру
15.04.15
✎
15:01
|
и самое главное, что метапарсер будет работать как для той базы, так и для этой
|
|||
57
Ёпрст
гуру
15.04.15
✎
15:05
|
вот, примерчик , для скуля
Процедура Сформировать() рс=создатьОбъект("ODBCRecordSet"); ТекстЗапроса = " |SELECT | СпрНаш.DESCR as КлиентосВЭтойбазе -- наименование клиентоса в этой базе, можно и не присоединять справочник, а просто типизировать | ,Спр.DESCR as КлиентосВУдаленнойБазе --наименование клиентоса в удаленной базе |FROM $Справочник.Контрагенты СпрНаш |left join dataBase2.dbo.@Справочник.Контрагенты Спр on СпрНаш.Code = Спр.Code |"; глМД = СоздатьОбъект("MetaDataWork"); ТекстЗапроса=глМД.ОбрМетаСКЛ(ТекстЗапроса); глМД2 = СоздатьОбъект("MetaDataWork"); ПутьКБазе2 = "D:\полный путьк базе данных\"; глМД2.ПрисоединитьМД(ПутьКБазе2+"1Cv7.md"); ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"@","$"); ТекстЗапроса=глМД2.ОбрМетаСКЛ(ТекстЗапроса); Т = рс.ВыполнитьИнструкцию(ТекстЗапроса); Т.ВыбратьСтроку(); КонецПроцедуры |
|||
58
Ёпрст
гуру
15.04.15
✎
15:06
|
+ 57 тут "синхронизация" по коду справочника + работа метапарсера для обеих баз (не надо вспоминать, как там имена таблиц в не родной базе называются)
|
|||
59
trad
15.04.15
✎
16:15
|
(55) будет если только одна база потомок другой
|
|||
60
Ёпрст
гуру
15.04.15
✎
16:17
|
(59) не, можно "привести" по коду/реквизиту к объектам этой базы и типизировать
|
|||
61
trad
15.04.15
✎
17:13
|
моя твоя не понел
ну да ладно |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |