Имя: Пароль:
1C
1С v8
Задачка на собеседовании.
0 Dunstan
 
22.03.12
12:14
Есть две временные таблицы с одинаковой структурой:
1.товар
2.накладная
4.количество
Как запросом вытянуть все записи из 2-ой таблице, которых нет в первой.
1 Darly
 
22.03.12
12:15
НЕ В(...
2 Лодырь
 
22.03.12
12:16
Ну чеснэ слово, як диты
3 shamannk
 
22.03.12
12:16
Полное соединение где 1табл.Товари и .... =NULL
4 guitar_player
 
22.03.12
12:16
нот экзист
5 Dunstan
 
22.03.12
12:18
ну а написать можно полный текст?
6 shamannk
 
22.03.12
12:19
(5)5000т.р.
7 Dunstan
 
22.03.12
12:20
ну и цены...
8 Shurjk
 
22.03.12
12:20
(3) В каком случае при полном соединении может быть NULL ?
9 Balabass
 
22.03.12
12:20
Малото что 5000 так еще и т.р.
Это получается 5000000 рубелй?
10 Лодырь
 
22.03.12
12:21
(7) Успокоить совесть дорого стоит.
11 Shurjk
 
22.03.12
12:21
(9) На фоне тупости и бездарности - нормлаьные спецы всегда будут дорого стоить:)
12 Jofa
 
22.03.12
12:22
(0)Дак а чё тебя не взяли что ли??
13 Jofa
 
22.03.12
12:22
(0)Напиши свой вариант запроса?
14 Волесвет
 
22.03.12
12:23
меня смущает 1,2,4
а по решению - вытягиваешь из первой, потом тянешь из второй смотря есть ли это в первой
15 Dunstan
 
22.03.12
12:24
(12) неа.
16 Нуф-Нуф
 
22.03.12
12:28
иди устраивайся

ВЫБРАТЬ
   Таблица1.Накладная,
   Таблица1.Товар,
   Таблица1.Количество
ПОМЕСТИТЬ Врем1
ИЗ
   Таблица1 КАК Таблица1
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Врем1.Накладная,
   Врем1.Товар,
   Врем1.Количество
ИЗ
   Врем1 КАК Врем1
ГДЕ
   (НЕ (Врем1.Накладная, Врем1.Товар, Врем1.Количество) В
               (ВЫБРАТЬ
                   Врем2.Накладная,
                   Врем2.Товар,
                   Врем2.Количество
               ИЗ
                   Врем2))
17 Мыш
 
22.03.12
12:28
выбрать таблица2.* из таблица2 как таблица2 левое соединение (выбрать * из таблица1) как таблица1 по таблица2.поле=таблица1.поле где таблица1.поле=нулл
18 Axel2009
 
22.03.12
12:30
(16) а в какой запрос это выливается на скуль серваке?
19 fisher
 
22.03.12
12:30
Ну и тупой вариант из учебников:
ВЫБРАТЬ *
ИЗ
Т2
ЛЕВОЕ СОЕДИНЕНИЕ Т1
ПО Т2.Товар = Т1.Товар И Т2.Накладная = Т1.Накладная И Т2.Количество = Т1.Количество
ГДЕ Т1.Товар ЕСТЬ NULL
20 Axel2009
 
22.03.12
12:31
(19) самый быстрый. почему тупой?
21 Нуф-Нуф
 
22.03.12
12:32
(18) не понял высказывания
22 fisher
 
22.03.12
12:32
(20) Ну, не тупой. Классический, скажем так. Во всех учебниках по SQL есть.
23 mirosh
 
22.03.12
12:32
(16) а таблицы убивать кто будет?
24 Dunstan
 
22.03.12
12:33
Уточню,вытащить надо именно записи
25 mirosh
 
22.03.12
12:33
(18) в такой же запрос, т.к. все эти субд поддерживают временные таблицы
26 mirosh
 
22.03.12
12:34
(24) а что еще можно вытащить? пиши (19) и (16), только (16) еще надо джоработать:

ВЫБРАТЬ
   Таблица1.Накладная,
   Таблица1.Товар,
   Таблица1.Количество
ПОМЕСТИТЬ Врем1
ИЗ
   Таблица1 КАК Таблица1
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   Таблица2.Накладная,
   Таблица2.Товар,
   Таблица2.Количество
ПОМЕСТИТЬ Врем2
ИЗ
   Таблица2 КАК Таблица2
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   Врем1.Накладная,
   Врем1.Товар,
   Врем1.Количество
ИЗ
   Врем1 КАК Врем1
ГДЕ
   (НЕ (Врем1.Накладная, Врем1.Товар, Врем1.Количество) В
               (ВЫБРАТЬ
                   Врем2.Накладная,
                   Врем2.Товар,
                   Врем2.Количество
               ИЗ
                   Врем2))
;
//////////
УНИЧТОЖИТЬ Врем1;
///////////
УНИЧТОЖИТЬ Врем2
27 Нуф-Нуф
 
22.03.12
12:35
(23) ну это детали :)
28 Нуф-Нуф
 
22.03.12
12:37
главное же принцип
29 Dunstan
 
22.03.12
12:42
спс.
Еще вопросик был.
В обработке проводятся документы. Как сделать так, чтоб этот процесс ускорился?
30 Господин ПЖ
 
22.03.12
12:43
звпихнуть в транзакцию например
31 Jolly Roger
 
22.03.12
12:43
(26) а чо будет, если не напишешь
УНИЧТОЖИТЬ Врем1;
УНИЧТОЖИТЬ Врем2
?
32 Господин ПЖ
 
22.03.12
12:44
(31) по идее - ничего...
33 Jolly Roger
 
22.03.12
12:44
(29) купить новый сервер...
34 Jolly Roger
 
22.03.12
12:45
(32) ну вот мне и интересно зачем это писать...
35 lordmb
 
22.03.12
12:45
(28) имхо, это лишнее.
"В пакетном запросе тексты запросов разделяются символом «;». Запросы исполняются последовательно, при этом временные таблицы, которые были созданы во время исполнения какого-либо запроса, будут существовать до окончания исполнения всего пакета запроса или до исполнения в пакете запроса, уничтожающего данную временную таблицу."
36 Нуф-Нуф
 
22.03.12
12:46
(34) они остаются на сервере в виде таблиц (на время жизни сеанса наверно). если запросы серьезные и база не маленькая, убивание временных таблиц лишним не будет
37 ИС-2
 
naïve
22.03.12
12:47
ускорить можно индексированием по номенлатуре
38 ИС-2
 
naïve
22.03.12
12:47
странно, что не было вопроса "А на какую сумму з/п эта задача"
39 Jolly Roger
 
22.03.12
12:47
(36) наверно... надо точно знать...
40 Axel2009
 
22.03.12
12:48
(25) в скуле нет такой конструкции
select c1,c2 from table where (c1,c2) not in (select c1,c2 from table2)
поэтому она трансформируется во что-то
41 Dunstan
 
22.03.12
12:48
(29)ну вот и я не знал, что ответить про ускорение проведения документов
ну только если оптимизировать модуль проведения
42 Нуф-Нуф
 
22.03.12
12:49
(40) интересно бы посмотреть в какой скулевский запрос 1с его переделает
43 Axel2009
 
22.03.12
12:55
SELECT
T1._Q_000_F_000,
T1._Q_000_F_001,
T1._Q_000_F_002
FROM #tt1 T1 WITH(NOLOCK)
WHERE (NOT ((EXISTS(SELECT
1
FROM #tt2 T2 WITH(NOLOCK)
WHERE (T1._Q_000_F_000 = T2._Q_001_F_000) AND (T1._Q_000_F_001 = T2._Q_001_F_001) AND (T1._Q_000_F_002 = T2._Q_001_F_002)))))
44 guitar_player
 
22.03.12
12:57
(43) +100500
45 Попытка1С
 
22.03.12
12:58
Грохать за собой временные таблицы это хороший тон.
46 Адинэснег
 
22.03.12
13:00
(0) больше не старайся, не берем мы тебя к себе
и не звони
47 mirosh
 
22.03.12
13:01
(32) ну-ну, удачи)
48 Dunstan
 
22.03.12
13:05
(46) Да я и не позвоню. Просто ради интереса спросил.
Ну так за ускорение проведения документов есть у кого какие мнения?
49 lordmb
 
22.03.12
14:12
(48) ОбработкуПроведения в студию
50 Dunstan
 
22.03.12
16:53
49 ну мысли есть или где?
51 shamannk
 
22.03.12
16:56
(50) Есть! Не проводить так как проведение в твоем случае не требуется. Так как это ненужно по причине 1 и 4 условия.
52 ileg
 
22.03.12
17:08
(48) Смотря какие документы. Ускорить групповое проведение можно, отключив предварительно расчет итогов регистров.
53 acsent
 
22.03.12
17:10
на собеседование важно не что ты ответишь, а как ты ответишь. На такие вопросы нужно отвечать не задумываясь
54 Зеленый Кот
 
22.03.12
18:26
swap a,b

мой первый приз, на работу к вашему начальнику не пойду...
55 Зеленый Кот
 
22.03.12
18:26
блин ветки попутал ;)
56 Господин ПЖ
 
22.03.12
18:29
(47) что ну-ну? без особой необходимости мочить времянки смысла нет
57 Axel2009
 
22.03.12
18:29
(50)
1. выгнать всех из базы
2. писать порциями в транзакции
3. купить новое железо
4. проанализировать проведение, оптимизировать выборки данных
(52) ага, и контролировать остатки совсем весело
58 Господин ПЖ
 
22.03.12
18:30
(57) как в КД - выключил, загрузил, включил
59 rs_trade
 
22.03.12
18:32
(0) первый раз в первый класс?
60 Axel2009
 
22.03.12
23:41
(58) в кд остатки не считаются.
61 Господин ПЖ
 
22.03.12
23:42
(60) вопрос был как убыстрить... и потом грузят вероятно уже свершившийся факт - смысл контролировать
62 Axel2009
 
22.03.12
23:45
(61) перепроведение как правило восстановление последовательности..
63 Dmitry77
 
23.03.12
00:40
Еще один вариант, правда синтаксис не помню,
выбрать
Накладная,
   Товар,
   Количество
{ВЫБРАТЬ
   Накладная,
   Товар,
   Количество
   1 как инд
ИЗ Таблица1
Объединить
ВЫБРАТЬ
   Накладная,
   Товар,
   Количество
   2 как инд
ИЗ Таблица2
Групировать(накладная, товар,Количество)  
Сумма инд}
Где инд = 2
64 Упанишады
 
23.03.12
05:47
(63)Надо "ВЫБРАТЬ РАЗЛИЧНЫЕ...". В противном случае в результате группировки и суммирования могут появиться записи, где инд = 4, инд = 6 и т.д. и запрос не отработает.
65 Новиков
 
23.03.12
08:47
>>Cтранно, что не было вопроса "А на какую сумму з/п эта задача"

пожалуйста, озвучьте город и цену вакансии!
66 Dunstan
 
16.04.12
15:07
Москва, от 80. Ну там было много других вопросов.
67 aleks-id
 
16.04.12
15:18
>>много других вопросов.
процедуру списания по партиям не просили написать? а то мне одни понтовые умники прислали "приглашение" типа "подравляем, вы перешли во второй тур отбора. решите несколько задач, бла-бла-бла" и вордовский файл причепленный через опу. ну я им и ответил что серьезные работодатели сначала присылают описание вакансии, а уже потом задают задачки для второго класса. а партионку пусть засунут в зад ибо рауз рулит.
68 Dunstan
 
16.04.12
17:21
(67)что мне не особо понравилось это то, что вопросы не точно сформулированы...
вот про проведение... убыстрить переписывая код или как....
69 Shurjk
 
16.04.12
17:21
(0) Совсем уже обрзели уже на собеседованиях в мисту лезут чтоб им тут элементарные задачи решали.
70 Shurjk
 
16.04.12
17:24
(67) Они наверное после этого застрелились от огорчения.
71 aleks-id
 
16.04.12
20:41
(70) мне пох. своим пафосом пусть протолкнут партионку поглубже.
72 Адинэснег
 
16.04.12
20:48
(69) дак знаешь как щас тестирование проводят? задают 6-7 тупых задач, и на мисту, мониторить клювастых
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.