|
Запрос. Левое соединение. Как получить только первый в правой части? | ☑ | ||
---|---|---|---|---|
0
arsik
гуру
23.05.12
✎
10:12
|
Есть 2 таблицы Номенклатура и ШтрихКоды.
Как запросом выбрать всю номенклатуру и для каждой номенклатуры 1й штрихкод. Следующим запросом если в таблице номенклатуры 2 записи и у каждой 2 штрих кода. Результат будет 4 строки.Типа:
А мне хочется:
|
|||
1
Buster007
23.05.12
✎
10:14
|
а почему ШтрихКод1, а не ШтрихКОд2?
|
|||
2
zak555
23.05.12
✎
10:16
|
вложенный запрос
|
|||
3
butterbean
23.05.12
✎
10:17
|
соединяй с
(ВЫБРАТЬ(Владелец,МАКСИМУМ(Штрихкод) ИЗ РегистрСведений.Штрихкоды КАК Штрихкоды СГРУППИРОВАТЬ ПО Владелец) КАК Штрихкоды |
|||
4
Shurjk
23.05.12
✎
10:17
|
Когда уже наконец введут в запросах оператор - "мне хочется" чтоб выбирал именно то что хочется, а то приходиться понимаешь разбираться как эти запросы работают. А то консоль сделали а "корректную" работу запросов формируемых с помощью нее не обеспечили - явная не доработка.
|
|||
5
SoulPower
23.05.12
✎
10:17
|
ага, группировка нужна.
|
|||
6
arsik
гуру
23.05.12
✎
10:40
|
(1) Ну это в примере. В принципе подойдет любой.
(3) Точно. Как то не дошел, что можно через эту функцию сделать Спасибо. |
|||
7
mikecool
23.05.12
✎
10:41
|
ВЫБРАТЬ
Номенклатура.Ссылка, Штрихкоды.Штрихкод ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды ПО (Штрихкоды.Владелец = Номенклатура.Ссылка) И Штрихкоды.Штрихкод В (Выбрать Первые 1 ШтрихКод Из РегистрСведений.Штрихкоды Где Штрихкоды.Владелец = Номенклатура.Ссылка ) |
|||
8
arsik
гуру
23.05.12
✎
12:00
|
(7) Так я изначально хотел сделать, но мне показалось, что не комильфо. Не оптимально.
Проверил. Запрос через вложенный запрос (3) быстрее раза в 2, а в тестовой базе штрихкодов то почти нет. |
|||
9
wise
23.05.12
✎
12:06
|
(4) +100500
:-) |
|||
10
Mkonst
23.05.12
✎
12:11
|
а что никто не предложил такое:
ВЫБРАТЬ Номенклатура.Ссылка, Штрихкоды.Штрихкод ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды ПО (Штрихкоды.Владелец = Номенклатура.Ссылка) и РегистрСведений.Штрихкоды в (&СписокНужныхШтрихкодов) |
|||
11
Humandra
23.05.12
✎
12:15
|
(3) Можно не соединять, а сразу максимум брать
|
|||
12
arsik
гуру
23.05.12
✎
13:14
|
(10) &СписокНужныхШтрихкодов - а это мне откуда взять?
(11) Не понял. |
|||
13
Mkonst
23.05.12
✎
13:19
|
(12) >> (10) &СписокНужныхШтрихкодов - а это мне откуда взять?
если текст вызывает затруднения используй (7) |
|||
14
УхТы
23.05.12
✎
13:25
|
У меня аналогичная ситуация тока так с Макс не сделать...
Регистр ЦеныНоменклатурыКонтрагентов беру срез последних имеим Номенклатура1 | 150р |ООО "Рога" | 01.04.12 Номенклатура1 | 200р |ООО "Копыта" | 01.05.12 А мне надо тока последнее по дате не зависимо от контрагента (контрагент лезит из ТипЦен.Владелиц) |
|||
15
УхТы
23.05.12
✎
13:28
|
В запросе делаю ВЫБРАТЬ РАЗЛИЧНЫЕ, но он из-за владельца не считает их различными
|
|||
16
arsik
гуру
23.05.12
✎
13:28
|
На самом деле получился вот такой запросец
|
|||
17
Mkonst
23.05.12
✎
13:37
|
(16) запрос из левого соединения вытащи во временную таблицу... уменьшишь время работы запроса
|
|||
18
arsik
гуру
23.05.12
✎
13:59
|
Он и так во временной.
|
|||
19
Humandra
24.05.12
✎
19:43
|
(12)
я имела в виду такое: ВЫБРАТЬ Номенклатура.Ссылка, МАКСИМУМ(Штрихкоды.Штрихкод) ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды ПО (Штрихкоды.Владелец = Номенклатура.Ссылка) СГРУППИРОВАТЬ ПО Номенклатура.Ссылка но это я так, чисто теоретически, что мол и так еще можно. А так, скорее всего оптимальнее будет сначала сгруппировать и потом соединить, потому что оптимизатор не всегда разруливает такие соединения. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |