Aktualizacja tabeli na podstawie id widoku

0

Dzień dobry, mam zapytanie które muszę aktualizować ręcznie na postawie id z utworzonego widoku(widok jest stworzony do potwierdzenia czy faktycznie klient utworzył komentarz do produktu i czy faktycznie zakupił towar w sklepie na podstawie adresu email)

Widok

SELECT id from Widok;

Pojawiają mi się id(przykładowo):

1,
2,
3,
4,

które modyfikuje tym zapytaniem

UPDATE `tabela_do_zmiany`
SET `admin_response` = 'Treść zmiany', `is_display_old` = '1'
WHERE `tabela_do_zmiany`.`id` IN ('1','2','3','4');

Wszystko mi działa tak jak założyłem sobie z góry lecz musze to robić ręcznie.

Pytanko jak to zautomatyzować próbowałem tak:

SELECT @zmienna := id FROM Widok;
UPDATE `tabela_do_zmiany` SET `admin_response` = 'Treść zmiany', `is_display_old` = '1' WHERE `tabela_do_zmiany`.`id` IN (@zmienna);

Lecz wtedy mam tylko jedną zmienną zapisaną jak w przykładzie 1, a nie ciąg 1,2,3,4 który by wpadł do @zmienna

Pytanko jak mogę zrobić takie zapytanie aby był cały ciąg jest to w ogóle możliwe do zrobienia? Wtedy bym mógł sobie to wrzucić do php i cronem włączać skrypt aby to szło z automatu.

1

W PostgreSQL (co nawet ostatnio testowałem) można napisać

UPDATE tabela_do_zmiany AS t 
SET admin_response = 'Treść zmiany'
FROM Widok AS v
WHERE t.id = v.id

Ale nie wiem czy to zadziała w MySQLu

HM, tak jakby nie było UPDATE FROM https://dev.mysql.com/doc/refman/8.0/en/update.html , dziwne. To tyle jeśli chodzi o standardy SQLa i jego przenośność :(

0
dsxsoft napisał(a):

Dzień dobry, mam zapytanie które muszę aktualizować ręcznie na postawie id z utworzonego widoku(widok jest stworzony do potwierdzenia czy faktycznie klient utworzył komentarz do produktu i czy faktycznie zakupił towar w sklepie na podstawie adresu email)

Tłumaczyłeś przez aliexpres? Google ma lepszy translator

3

Problem został przedstawiony tak, że pierwsza odpowiedź, jaka mi przychodzi na myśl, to POMIDOR.

A próbowałeś tak:

UPDATE tabela_do_zmiany
SET admin_response = 'Treść zmiany', is_display_old = '1'
WHERE tabela_do_zmiany.id IN (SELECT id from Widok);

?

0

Fac Super dzięki to działa. No sorki pisałem na szybko ciężki dzień i trochę to pokręciłem z tym opisem problemu:) Kombinuje na zmiennych a to wystarczy takie proste zapytanie (SELECT id from Widok) Heh super jeszcze raz dzięki:)

0

Nie wiem co jest złego w UPDATE/FROM/WHERE. Po co subquery?

Może to że MySQL jest upośledzony? i nie widzę żeby miał UPDATE FROM ?
Z drugiej strony teraz widzę że ma UPDATE JOIN XD https://www.mysqltutorial.org/mysql-update-join/

Czyli można napisać:

UPDATE tabela_do_zmiany
INNER JOIN tabela_do_zmiany ON tabela_do_zmiany.id = widok.id
SET admin_response = 'Treść zmiany', is_display_old = '1'

Wie ktoś czy to zadziała?

0
[Riddle napisał(a)]

Nie wiem co jest złego w UPDATE/FROM/WHERE. Po co subquery?

Ja się na majeskuelach nie znam i nie wiem, co w nich się da, a co nie. Nie napisałem, że subquery będzie lepsze od UPDATE FROM.
Podałem je jako alternatywę, która może okazać się przystępniejsza dla pytającego, bo składa się z dwóch zapytań napisanych przez niego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1