|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Помогите соединить две таблицы в одну. Заранее спасибо. Код: sql 1.
Код: sql 1.
Если в таблице tmp1 за текущую дату 90 записей, а в таблице tmp2 за предыдущую дату 80 записей, то необходимо получить объединенную таблицу tmpall за текущую дату, Код: sql 1.
Причем, если записи tmp1 отсутствуют в tmp2, то необходимо при объединении присвоить d3.[t2_n5]=0 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2019, 15:16 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
ularsoft, Перечитайте свой же топик https://www.sql.ru/forum/1288430-2/obedinit-neskolko-tablic-i-poluchit-odnu-tablicu Ровно год назад. Вопрос задавать, так и не научились. Либо упростите ответ вам, правильно задав вопрос, со всеми данными, либо... ждите экстрасенсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2019, 16:03 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Теоретически, написать можно. Но! Если за несколько лет работы с данными Вы так и не поняли, что для объединения таблиц нужно, как минимум, указать ПРАВИЛА по которым Вы собираетесь их объединять, то в очередной раз делать за Вас Вашу работу нет никакого желания Направление поиска Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Что именно должно быть указано в условии объединения ON - Вам виднее. На всякий случай напомню, то там возможно указание нескольких условий через AND Опять же, почему Вы решили, что за текущий день записей больше, чем за предыдущий? А если наоборот? Тоже решаемо. В общем случае здесь должно быть объединение по FULL JOIN и каждое поле в выборке "оборачивается" в NVL() Т.е. Вы, как обычно, озвучили крайне мало данных для решения задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 10:13 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
asdorПеречитайте свой же топик https://www.sql.ru/forum/1288430-2/obedinit-neskolko-tablic-i-poluchit-odnu-tablicu Уважаемый asdor, ровно год назад я с вашей же помощью сделал свой отчет. asdorВопрос задавать, так и не научились. Я не понимаю, а как надо задавать вопросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 16:05 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Попробую задать вопрос по другому :) Не ругайтесь пожалуйста :) Короче ведется учет на складе. В базе данных ms sql имеется таблица, к примеру, 1000 клиентов с товарами. Сначала я получил 200 крупных клиентов за текущий день. Это без проблем. Для сравнения мне нужно еще получить 200 крупных клиентов за предыдущий день. Это тоже без проблем. За предыдущий день могут быть совершенно другие 200 крупные клиенты. За текущий день тоже самое. Значит, беру я 200 крупных за текущий день и сравниваю с 200 клиентами за предыдущий день. Если некоторые клиенты за текущий день отсутствует в таблице за предыдущий день, то мне нужна 3 таблица с полями за текущий день: Наименование клиента, текущий остаток, остаток за предыдущий день. Где, остаток за предыдущий день может быть 0, если клиент не попал за текущий день в число крупных. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 16:27 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Программисты пишут код, а не художественное произведение Еще раз, чего с чем сравниваете? Код: sql 1.
КАК? Как Вы их сравниваете? Как Вы понимаете, что вот этот клиент есть в первом списке, но его нет во втором? "Мамой клянусь" (с) или все-таки какие-то поля анализируете? Это Вы у себя там видите, а нам здесь это не понятно. Вы привели структуру с 4 полями. И что эти поля обозначают? Можете хотя бы картинку привести с заполненными полями. Что вот есть две такие таблицы, а в результате надо получить вот такую таблицу Т.е. что я хочу увидеть Таблица 1 f1 f2 f3111222 Таблица 2 f1 f2 f3111333 Результат объединения f1f2f3111222333 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2019, 18:32 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Значит, я делаю сначала 2 запроса за текущий и предыдущий дни: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Далее... Код: sql 1. 2. 3. 4. 5. 6.
Код: sql 1. 2. 3. 4. 5. 6.
Далее, объединяю курсоры t_TMP1 и t_TMP2 Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Как сравнить или объединить 2 таблицы? Если некоторые клиенты в t_TMP1 за текущий день отсутствует в таблице t_TMP2 за предыдущий день, то мне нужна 3 таблица TMPALL: Наименование клиента остаток за m_today остаток за m_yesterdayИванов И.И.I1I2Петров П.П.P1P2Алексеев А.А.А10.........Если клиент не попал за текущий день в число крупных, то остаток за предыдущий день должен быть 0. Т.е. Алексеев А.А. не был крупным клиентом за предыдущий день... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 07:00 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Вы опять умудрились сказать много слов, но так и не ответили на вопрос С точки зрения объединения 2 таблиц совершенно не важно, как именно эти таблицы были получены. Вопрос только и исключительно в структуре самих таблиц и правиле их объединения Т.е. из всего этого "потока сознания" с точки зрения заданного вопроса интерес представляет только последний приведенный Вами запрос. Вот это вот Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
И что Вас не устраивает в том, что этот запрос отображает? Можете привести картинку, что было в таблицах t_TMP1 и t_TMP2 и что в результате получилось в TMPALL? Что Вас в этом результате не устраивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 10:30 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
За текущий день t_TMP1: kod_kl t1_n5112000000121500000131750000...... За предыдущий день t_TMP2: kod_kl t1_n5112000000131320000141100000...... После объединения Код: sql 1. 2. 3. 4. 5. 6.
3 таблица TMPALL должна быть: Код клиента остаток за m_today остаток за m_yesterday112000000200000012150000013200001317500000.........А у меня вместо 0 другая цифра получается... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 17:55 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Не важно как я получаю t_TMP1 и t_TMP2. Самая главная 3 таблица TMPALL: Код клиента остаток за m_today остаток за m_yesterday112000000200000012150000013200001317500000......... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2019, 18:00 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
ularsoftА у меня вместо 0 другая цифра получается... Это значит, что есть клиент и "вчера", и "сегодня". Ищите по коду или по условиям объединения таблиц Прописная истина, но, возможно, Вы не в курсе. LEFT JOIN - это расширение INNER JOIN. Т.е. это к результату запроса, который получается по INNER JOIN еще кое-что добавляется. Так что, смотрите, что у Вас в исходных таблицах. Например, по тем данным, которые Вы показали в 2 исходных таблицах должно было бы получиться вот это Код клиента остаток за m_today остаток за m_yesterday 11 2000000 200000012 1500000 NULL13 1750000 1320000 А совсем не то, что Вы показали как результат. Вы крайне невнимательны к тому, что сами же и написали ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 13:40 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Тут UNION надо с группировкой Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 14:01 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Все таки я использовал с LEFT JOIN :) Сначала я получил 200 крупных клиентов за текущий день: Код: sql 1. 2.
Затем 200 крупных клиентов за предыдущий день: Код: sql 1. 2.
После чего следующее Код: sql 1.
У меня получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 14:40 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
ularsoftУ меня получилось. Получилось если нормально что клиент из kl_TMP2 никогда не попадет в отчет если его не было в kl_TMP1 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 14:49 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
Замени LEFT JOIN на FULL JOIN ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 14:50 |
|
Снова сравнение и объединение двух таблиц
|
|||
---|---|---|---|
#18+
и это создаст проблему Код: sql 1.
т.к. имена полей одинаковы, то лучше их явно перечислить Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2019, 14:55 |
|
|
start [/forum/search_topic.php?author=stm667&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 10695ms |
total: | 10839ms |
0 / 0 |