Выберите 2 строки и переключите значения - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть таблица в SQL с именем "TAB_Movimentos", в которой есть "Lançamento", "Banco" и "Ordem" и другие вещи ...

Я загружаю ее в свою сетку данных "Histórico" и я скрываю столбец «Ordem» (порядок) (потому что он предназначен только для внутреннего использования)

Я хочу изменить порядок строк, когда происходит указанное событие, для этого мне нужно изменить «Ordem» из 2 выбранных строки.

Проблема заключается в том, что я скрываю этот столбец "Ordem", поэтому получить его можно, только просмотрев мою таблицу SQL. Из-за этого я должен сделать 2 запроса, чтобы получить данные, сохранить их и сделать 2 запроса обновить их. Я думаю, что есть более простой / быстрый способ сделать это.

Это то, что мне нужно, это работает! Используя много Sqlcommand, но я хочу использовать 1 команду вместо этого.

A = "SELECT Ordem FROM TAB_Movimentos WHERE Lançamento = '1' AND Banco = '1'" 
B = "SELECT Ordem FROM TAB_Movimentos WHERE Lançamento = '2' AND Banco = '2'" 

"UPDATE TAB_Movimentos SET Ordem = 'A' WHERE Lançamento = '2' AND Banco = '2'"
"UPDATE TAB_Movimentos SET Ordem = 'B' WHERE Lançamento = '1' AND Banco = '1'"

enter image description here enter image description here

1 Ответ

0 голосов
/ 28 апреля 2020

select s можно объединить, используя логические логики c:

SELECT Ordem 
FROM TAB_Movimentos 
WHERE (Lançamento = 1 AND Banco = 1) OR (Lançamento = 2 AND Banco = 2)

Некоторые базы данных поддерживают равенство кортежей, например:

WHERE (Lançamento, Banco ) IN ( (1, 1), (2, 2) )

Что касается update s, вы можете использовать условную логику c:

UPDATE TAB_Movimentos 
SET Ordem = CASE 
    WHEN Lançamento = 2 AND Banco = 2 THEN 'A' 
    WHEN Lançamento = 1 AND Banco = 1 THEN 'B'
END
WHERE (Lançamento = 1 AND Banco = 1) OR (Lançamento = 2 AND Banco = 2)

Если вы используете ms-access, вам нужно IIF() вместо CASE.

Обратите внимание, что эти запросы обрабатывают Lançamento и Banco как числа, потому что они выглядят как числа. Если они действительно жгут, вы можете добавить одинарные кавычки вокруг 1 и 2.

...