Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по написанию запроса
|
|||
|---|---|---|---|
|
#18+
Добрый день. Подскажите, пожалуйста, как реализовать запрос под следующую задачу. Предположим есть две таблицы, в каждой по два столбца - Товар (ключ) и Цена. Необходимо соединить эти таблицы, например, к первой присоединить вторую и если цены в разрезе товара между таблицами отличаются, тогда необходимо в присоединяемой (вторая) таблице обновить цены (если такого товара нет, тогда добавить новую строку) на основании данных из первой таблицы. Задача звучит просто, но я в T-SQL новичок и для меня на данном этапе проблематично реализовать данный запрос. Единственное пока до чего я додумался - это заполнение одной таблицы на основании другой: Код: sql 1. 2. 3. 4. Но для моей задачи это не подходит, так как нет сравнения по цене и при совпадении ключевых полей появится ошибка. За ранее благодарен за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2021, 05:48 |
|
||
|
Вопрос по написанию запроса
|
|||
|---|---|---|---|
|
#18+
Обычный MERGE INTO table2 USING table1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2021, 07:35 |
|
||
|
Вопрос по написанию запроса
|
|||
|---|---|---|---|
|
#18+
xa1ter, Код: sql 1. 2. 3. 4. 5. 6. Найдите учебник по запросам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2021, 13:12 |
|
||
|
Вопрос по написанию запроса
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ответы! Учебник есть ("Основы T-SQL"), но недавно отдал его товарищу, на дня заберу обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2021, 02:42 |
|
||
|
Вопрос по написанию запроса
|
|||
|---|---|---|---|
|
#18+
xa1ter Большое спасибо за ответы! Учебник есть ("Основы T-SQL"), но недавно отдал его товарищу, на дня заберу обратно. Лайфхацк: не забирайте учебник, может, хоть товарищ почитал его, и задайте ему вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2021, 15:44 |
|
||
|
Вопрос по написанию запроса
|
|||
|---|---|---|---|
|
#18+
IF OBJECT_ID('tempdb..#TestMerge') IS NOT NULL DROP TABLE #TestMerge; GO CREATE TABLE #TestMerge ( ID INT NOT NULL, K INT NOT NULL, T VARCHAR(40) NOT NULL ); ;WITH X AS ( SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n) ) INSERT INTO #TestMerge(ID, K, T) SELECT TOP 30 RN, RN % 4, RIGHT(CONCAT('0000', RN % 17), 3) FROM ( SELECT -1 + ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RN FROM X AS X1, X AS X2 ) XX ORDER BY RN ; SELECT * FROM #TestMerge ORDER BY K, T; IF OBJECT_ID('tempdb..#IDS') IS NOT NULL DROP TABLE #IDS; CREATE TABLE #IDS(KK INT NOT NULL); INSERT INTO #IDS(KK) VALUES(0), (1) ; WITH t AS ( SELECT t.* FROM #TestMerge t INNER JOIN #IDS I ON I.KK = t.K ) MERGE t AS target USING ( SELECT ID, K, T + T AS T FROM #TestMerge WHERE K IN (1, 0) AND ID <= 20 UNION ALL SELECT 9999, 0, '999999' UNION ALL SELECT 8888, 1, '888888' ) AS source ON source.ID = target.ID AND source.K = target.K WHEN MATCHED AND ( source.T <> target.T ) THEN UPDATE SET T = source.T WHEN NOT MATCHED BY TARGET THEN INSERT (ID, K, T) VALUES ( ID, K, T ) WHEN NOT MATCHED BY SOURCE THEN DELETE ; SELECT * FROM #TestMerge ORDER BY K, T; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2021, 17:42 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1684411]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 139ms |

| 0 / 0 |
