|
Несвязанные таблицы в запросе | ☑ | ||
---|---|---|---|---|
0
Max Street
03.05.13
✎
18:39
|
Привет. Простой вопрос, но раньше с этим не сталкивался.
Можно ли в запросе(без пакетных и вложенных запросов) получать данные из двух НЕсвязанных таблиц? К примеру вот так: "ВЫБРАТЬ | ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток, | КурсыВалютСрезПоследних.Курс | ИЗ | РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки(&МоментВремени, ) КАК ВзаиморасчетыСПокупателямиОстатки, | РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних"; Спасибо! |
|||
1
ДенисЧ
03.05.13
✎
18:42
|
я не против..
|
|||
2
zak555
03.05.13
✎
18:42
|
получай
|
|||
3
unregistered
03.05.13
✎
18:44
|
(0) А смысл? Получишь декартово произведение двух множеств. И что ты будешь с этим делать?
|
|||
4
EugeniaK
03.05.13
✎
18:47
|
(0) Можно.
Только нужно, чтоб в обеих данные были. |
|||
5
zak555
03.05.13
✎
18:48
|
(4) т.е. если в одной из не будет данные запрос ничего не вернёт ?
|
|||
6
Max Street
03.05.13
✎
18:49
|
Просто мне казалось, что таблицы должны быть обязательно связаны. Спасибо!
(3) Так получилось, что эти две таблицы мне не по чем связать, а данные надо получить и из РегистраНакопления, и из РегистраСведений |
|||
7
Jaap Vduul
03.05.13
✎
18:49
|
Декартово произведение комбинирует каждую строку первой таблицы с каждой строкой второй таблицы. Вообще, декартово произведение двух таблиц, где первая таблица содержит п строк, а у второй таблицы т строк, создаст результат с количеством строк, равным п х т.
На практике декартово произведение используется крайне редко. Иногда пользователи генерируют декартово произведение двух таблиц, когда они забывают включить условие соединения в предложение where при использовании синтаксиса соединения «старого стиля». В этом случае выходной набор данных не будет соответствовать ожидаемому результату, потому что содержит слишком много строк. (Наличие очень большого количества неожидаемых строк в результате выборки данных является подсказкой, что было получено декартово произведение двух таблиц вместо ожидаемого естественного соединения). |
|||
8
EugeniaK
03.05.13
✎
18:53
|
(5) Ничего не вернет.
(7) В том числе если в одной 5 строк, во второй 0, то в итоговой 5*0=0 (6) Почему не по чем? Хотя бы по коду валюты. |
|||
9
shuhard
03.05.13
✎
18:55
|
(6) на такой случай есть:
Объединить все |
|||
10
Max Street
03.05.13
✎
18:57
|
(8) К сожалению, так тоже не получится
(9) А ОБЪЕДИНИТЬ ВСЕ лучше, чем просто получение данных из несвязанных таблиц? |
|||
11
Raybek
03.05.13
✎
19:00
|
Если даже нет ключевого поля для связи, то какая подразумевается семантическая связь?
Проще говоря смысл в чем? |
|||
12
Raybek
03.05.13
✎
19:01
|
(11) Что нужно в итоге получить?
|
|||
13
zak555
03.05.13
✎
19:03
|
(8) а если хочешь вернуть хоть что-то то нужно делать полное соединение
|
|||
14
Max Street
03.05.13
✎
19:10
|
(11) Нету ключевого поля для связи потому, что курс требуется получить на валюту, отличную от той, которая в измерении Взаиморасчетов.
Пример, приведенный в (0), условный, т.к. под рукой нету исходного кода |
|||
15
Max Street
03.05.13
✎
19:12
|
Спасибо всем за помощь!
|
|||
16
zak555
03.05.13
✎
19:13
|
(11) по ИСТИНе
=) |
|||
17
GANR
03.05.13
✎
19:31
|
||||
18
unregistered
03.05.13
✎
21:37
|
(14) >> курс требуется получить на валюту, отличную от той, которая в измерении Взаиморасчетов
И что? Всё равно курс нужен по какой-то определенной валюте. Но ни как не по всем. Кроме того, скорее всего, потребуется конвертация из валюты взаиморасчетов в какую-то другую валюту. Даже если это не валюта регламентированного учета, всё равно не может не быть условия связи. Ну и наконец для конвертации важна дата курса. В примере из (0) это скорее всего будет либо дата остатков, либо дата документа взаиморасчетов, но ни как не все даты (нафига нам курс монгольского тугрика с 1990 года за каждый день, если тугрик не является ни валютой документа, ни валютой учета, ни валютой, в которой нам надо получить данные?...) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |