|
v7: Ошибка в запросе "Столбец недопустим в списке выбора" | ☑ | ||
---|---|---|---|---|
0
GandolF
27.06.13
✎
13:39
|
Всем привет!
При обработке запроса пишет: Столбец "dh8959.SP8949" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY. Собственно код: SELECT CAST('20120101' as datetime) AS Период, Док.sp8949 AS [Клиент $Справочник.Клиенты], Док.sp8950 AS [ПР $Справочник.ПунктыРазгрузки], СпрТов.ParentID AS [ГруппаТовар $Справочник.Товары], ДокументСтроки_.sp8951 AS [Товар $Справочник.Товары], SUM(ДокументСтроки_.sp8955) AS [Количество $Число] FROM dh8959 AS Док (NOLOCK) LEFT OUTER JOIN sc2760 AS СпрПР (NOLOCK) ON ((СпрПР.ID) = Док.sp8950) INNER JOIN _1sJourn AS Жур (NOLOCK) ON (Жур.IDDoc = Док.IDDoc) AND Жур.Date_Time_IDDoc BETWEEN '20120101' AND '20120131Z' AND Жур.Closed & 1 = 1 INNER JOIN dt8959 AS ДокументСтроки_ (NOLOCK) ON (ДокументСтроки_.IDDoc = Жур.IDDoc) INNER JOIN sc33 AS СпрТов (NOLOCK) ON ((СпрТов.ID) = ДокументСтроки_.sp8951) WHERE 1=1 AND Док.sp8949=' W ' ORDER BY Док.sp8949,Док.sp8950,СпрТов.ParentID,ДокументСтроки_.sp8951 В чем же ошибка? Если вместо ORDER BY ставлю GROUP BY, то всё катит, но мне не нужна GROUP BY ! |
|||
1
Господин ПЖ
27.06.13
✎
13:41
|
>но мне не нужна GROUP BY
тебе нет... sql - да... и поверь у него пока опыта в этом больше |
|||
2
Волшебник
27.06.13
✎
13:41
|
если есть SUM, значит нужна GROUP BY
|
|||
3
vicof
27.06.13
✎
13:41
|
то есть ты суммируешь, а группировать не хочешь? печально
|
|||
4
GandolF
27.06.13
✎
13:49
|
Дак вот оно чё!.. СУМ ему мешал
Спасибо большое! |
|||
5
GandolF
28.06.13
✎
16:00
|
Помогите ещё с одним глюком !
Код проверял через конструктор - работает, ставлю в отчет- выдаёт чушь: Meta name parser error: неизвестное метаимя или алиас "$Документ_РеализацияЗаМесяц_2" Код: |SELECT | Документ_МатрицаТов_1.IDDoc AS [МатрицаТов_Шапка_ТекущийДокумент $Документ.МатрицаТов], | $ДокументСтроки_МатрицаТов_1.Товар AS [МатрицаТов_ТабличнаяЧасть_Товар $Справочник.Товары], | __1sJourn_1.DocNo AS [МатрицаТов_Шапка_НомерДок $Число], | $Документ_РеализацияЗаМесяц_2.Клиент AS [РеализацияЗаМесяц_Шапка_Клиент $Справочник.Клиенты], | $Документ_РеализацияЗаМесяц_2.ПунктРазгрузки AS [РеализацияЗаМесяц_Шапка_ПунктРазгрузки $Справочник.ПунктыРазгрузки] |FROM | $Документ.МатрицаТов AS Документ_МатрицаТов_1 (NOLOCK) | INNER JOIN _1sJourn AS __1sJourn_1 (NOLOCK) ON (__1sJourn_1.IDDoc = Документ_МатрицаТов_1.IDDoc) | INNER JOIN $ДокументСтроки.МатрицаТов AS ДокументСтроки_МатрицаТов_1 (NOLOCK) ON (ДокументСтроки_МатрицаТов_1.IDDoc = __1sJourn_1.IDDoc), | $Документ.РеализацияЗаМесяц AS Документ_РеализацияЗаМесяц_2 (NOLOCK) | LEFT OUTER JOIN $Справочник.ПунктыРазгрузки AS Справочник_ПунктыРазгрузки_2_6 (NOLOCK) ON ((Справочник_ПунктыРазгрузки_2_6.ID) = $Документ_РеализацияЗаМесяц_2.ПунктРазгрузки) | LEFT OUTER JOIN $Документ.МатрицаТов AS Документ_МатрицаТов_2_6_2 (NOLOCK) ON ((Документ_МатрицаТов_2_6_2.IDDoc) = $Справочник_ПунктыРазгрузки_2_6.МатрицаТов) | INNER JOIN _1sJourn AS Жур2 (NOLOCK) ON (Жур2.IDDoc = Документ_РеализацияЗаМесяц_2.IDDoc) | Жур2.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND | Жур2.Closed & 1 = 1 |WHERE | Документ_МатрицаТов_1.IDDoc = Документ_МатрицаТов_2_6_2.IDDoc"; Если ВыбКлиент.Выбран()=1 Тогда ТекстЗапроса1= ТекстЗапроса1+" |AND $Документ_РеализацияЗаМесяц_2.Клиент=:ВыбКлиент"; КонецЕсли; Если (ВыбПР.Выбран()=1) Тогда ТекстЗапроса1= ТекстЗапроса1+" | AND $Документ_РеализацияЗаМесяц_2.ПунктРазгрузки=:ВыбПР |"; КонецЕсли; |
|||
6
АнжелаДэвис
28.06.13
✎
16:01
|
(5) у тебя нет объекта в базе Документ_РеализацияЗаМесяц_2
может надоть так: Документ.РеализацияЗаМесяц_2 |
|||
7
GandolF
28.06.13
✎
16:03
|
Так вот же оно:
$Документ.РеализацияЗаМесяц AS Документ_РеализацияЗаМесяц_2 (NOLOCK) Разве нет? |
|||
8
Mikeware
28.06.13
✎
16:03
|
(5) это не глюк
|
|||
9
Mikeware
28.06.13
✎
16:04
|
(7) и что _это_?
кросс джойн? |
|||
10
GandolF
28.06.13
✎
16:05
|
(9) типа того. А что не верно-то?
|
|||
11
Ёпрст
28.06.13
✎
16:06
|
(10) да всё..
|
|||
12
Mikeware
28.06.13
✎
16:06
|
(10) всё!
|
|||
13
GandolF
28.06.13
✎
16:07
|
Конкретней!
|
|||
14
АнжелаДэвис
28.06.13
✎
16:08
|
(13) блин, почитай ты уже про типизацию полей...
|
|||
15
Mikeware
28.06.13
✎
16:08
|
(13) соотношение радиусов слишком малО.
|
|||
16
АнжелаДэвис
28.06.13
✎
16:09
|
+14 если уже (6) тебе не понятно
|
|||
17
Mikeware
28.06.13
✎
16:09
|
(14) да там и без типизации...
|
|||
18
Mikeware
28.06.13
✎
16:10
|
(16) в (6) дурь написана
|
|||
19
АнжелаДэвис
28.06.13
✎
16:10
|
(18) наверное, я запросы ленюсь читать )
|
|||
20
АнжелаДэвис
28.06.13
✎
16:10
|
+19 а то вывалят пять страниц...
|
|||
21
Ёпрст
28.06.13
✎
16:10
|
(13) что в твоём понимании, должна делать конструкция
| INNER JOIN $ДокументСтроки.МатрицаТов AS ДокументСтроки_МатрицаТов_1 (NOLOCK) ON (ДокументСтроки_МатрицаТов_1.IDDoc = __1sJourn_1.IDDoc), | $Документ.РеализацияЗаМесяц AS Документ_РеализацияЗаМесяц_2 (NOLOCK) |
|||
22
АнжелаДэвис
28.06.13
✎
16:13
|
(21) разве не фул джойн?
|
|||
23
Ёпрст
28.06.13
✎
16:14
|
(22) че ?
|
|||
24
Mikeware
28.06.13
✎
16:14
|
(22) хез. я не пойму. думааю, что сиквел тоже не понимает...
|
|||
25
GandolF
28.06.13
✎
16:15
|
(21) Начиная с: | $Документ.РеализацияЗаМесяц AS Документ_РеализацияЗаМесяц_2 (NOLOCK)
Обработать описанный док, т.е РеализацияЗаМесяц |
|||
26
АнжелаДэвис
28.06.13
✎
16:16
|
(23)
скуль не понимает select... from table1, table2 ? |
|||
27
Mikeware
28.06.13
✎
16:16
|
(25) обработать - это удалить? просуммировать строки и разделить на фазу луны?
|
|||
28
GandolF
28.06.13
✎
16:22
|
(27) Где ты видишь удаление, и тем более суммирование ?
2-я часть нужна по-сути только для условий в запросе. Основной является table1 (если так понимать) И на хр.. между ними джоины ??? Другой вопрос если: (26) |
|||
29
Ёпрст
28.06.13
✎
16:27
|
(26) понимает, нежелательно использовать старый синтаксис для cross join и тут скорее старый приклол метапарсера - у ТС после from есть знаки табуляции
|
|||
30
Mikeware
28.06.13
✎
16:27
|
(28) а что значчит "обработать"?
почитай уже про ситнаксис... |
|||
31
Ёпрст
28.06.13
✎
16:27
|
Хотя, он сам не понимает, что пишет - каша мала, а не запрос.
|
|||
32
АнжелаДэвис
28.06.13
✎
16:33
|
(31) +1 но зато автор с амбициями
|
|||
33
GandolF
28.06.13
✎
16:36
|
(30) Не флуди! Ни одного поста по делу...
(31) этот запрос получился через КонструкторЗапросовSQL.ert - для меня как новичка - вполне удобная веЩ, и, да, он грешит дублированием некоторых джоинов, НО ни один ведь так и не ответил на ВОПРОС! |
|||
34
Ёпрст
28.06.13
✎
16:39
|
(33) см. (29) вторую часть предложения
|
|||
35
GandolF
28.06.13
✎
16:44
|
(34) посмотрел сразу как прочитал - не помогло,
|
|||
36
GandolF
28.06.13
✎
17:00
|
Ну что Умным и Без амбициозным по существу нечего больше добавить добавить !?!
|
|||
37
Ёпрст
28.06.13
✎
17:01
|
(35) не помогло что ?
табуляцию замени на пробелы везде. |
|||
38
GandolF
28.06.13
✎
17:13
|
(37) заменял, убирал, менял на CROSS JOIN...
|
|||
39
Ёпрст
28.06.13
✎
17:20
|
И ?
показывай запрос из отладки |
|||
40
GandolF
28.06.13
✎
17:50
|
(39) В том-то и дело, что до отладки не доходит - спотыкаеца сразу на $Документ_РеализацияЗаМесяц_2.Клиент AS [РеализацияЗаМесяц_Шапка_Клиент $Справочник.Клиенты]
|
|||
41
Mikeware
28.06.13
✎
17:52
|
ОбрМетаСКЛ тоже?
|
|||
42
Dolly_EV
01.07.13
✎
07:10
|
А если для $Документ.РеализацияЗаМесяц просто второй INNER JOIN попробовать сделать?
|
|||
43
ЧеловекДуши
01.07.13
✎
08:31
|
Ужас, автор как дятел, все время бьется головой об одно и тоже место :)
Использовать Кросс в запросе, это же надо, учитывая что наверняка у него там SQL 2000 х32 (максимум 4 Гб + еще сколько то, если железка поддерживает расширение памяти) :) INNER JOIN - на SQL 2000 оно работает отвратительно, т.е. быстрее будет работать Left or Right Join :) +(0) Вот пример, как отловить ошибку парсера. //Вставь в код команду ЗапросSQL.Отладка(1); //какой либо твой мусоро код... //После получения текста запроса... Если ЗапросSQL.Подготовить(ТекстЗапроса) = 0 Тогда //А тут ты увидишь ошибку подготовки запроса :) Сообщить(ЗапросSQL.GetLastError(), "!"); //А тут можно еще для наглядности вывести сам текст запроса Сообщить(ТекстЗапроса, "!"); Возврат; КонецЕсли; Переменная "ТекстЗапроса" - у тебя своя и содержит текст запроса :) |
|||
44
GandolF
02.07.13
✎
09:44
|
Ошибку победил - плохо-хорошо, умно или глупо, но отчет заработал как часы.
И ни одному "Члену" "МногоУважаемого Общества" не могу сказать спасибо! Раскритиковать чужую работу может каждый более-менее подкованный в этом деле, а вот предложить решение (пусть даже и на ваш субъективный взгляд) - НЕ СПОСОБЕН НИКТО! В остальных темах смотрел, всё тоже: автор- идиот, а то что он у вас и просит помочь разобраться, это как-то мимо прошло... Вообщем удачи вам, "кучка прыщавых юнцов" распираемых от собственной значимости, может ещё повзрослеете! |
|||
45
Mikeware
02.07.13
✎
09:46
|
(44) что, за тебя работу не сделали? Пришлось самому межушный ганглий напрягать?
|
|||
46
GandolF
02.07.13
✎
09:49
|
(45) За меня мою работу никто никогда не делал и не сделает.
И уж точно не тебе об этом говорить... |
|||
47
viktor_vv
02.07.13
✎
09:49
|
(44) Ты бы поделился, в чем проблема была, может кому приголится. А то становишься как все тут, по твоему мнению.
|
|||
48
Ёпрст
02.07.13
✎
09:51
|
показывай своё решение, старец
|
|||
49
GandolF
02.07.13
✎
09:53
|
(47) Ты прав - уподобляюсь)
Но делиться желание отпало, пишите в личку - поделюсь СВОИМИ наработками без всякого флуда) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |