Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Masowa zmiana rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
michaf1994
Witam
Potrzebuję napisać zapytanie, które masowo zmieni rekordy.
Tzn.:
Tabela:

id|cena|inne pola
-------------------
1|1001|coś tam
2|1111|coś tam
3|4041|coś tam
4|1561|coś tam
5|1067|coś tam
6|4565|coś tam
7|5575|coś tam
8|5643|coś tam
9|5545|coś tam
10|5643|coś tam


I teraz chcę za pomocą jednego zapytania ("chodzi o jedno wywołanie kodu mySQL w PHP) zrobić:

5|451|...
8|2351|...

czyli coś jakby:

UPDATE tabela SET cena=2351 WHERE id=8 AND cena=451 WHERE id=5

ale wiem, że nie zadziała mi mój kod. Możecie podpowiedzieć mi jak go przerobić?
Forti
Jeżeli chcesz zmienić rekordy które posiadają takie samo pole, np. 'coś tam' na 'coś tam 2' to proste zapytanie:

update tabela set `inne_pola`='coś tam 2' where `inne_pola`='coś tam'.


w innym wypadku powiedz co konkretnie chcesz zmienić. Jezeli chcesz ustawić różne wartości, róznym polom no to musisz mieć kilka zapytać. Może coś z pętlami i warunkami.

Daj więcej konkretów.
Crozin
Dlaczego koniecznie chcesz to zrobić jednym zapytaniem? Da się, ale w bardzo niewygodny sposób. Lepiej zrobić to "normalnie", tj. przygotować zapytanie, rozpocząć transakcję, zaktualizować każdy rekord z osobna i zakończyć transakcję:
  1. $stmt = $pdo->prepare('UPDATE tabela SET cena = :cena WHERE id = :id');
  2.  
  3. $pdo->beginTransaction();
  4.  
  5. foreach ($dane as $id => $cena) {
  6. $stmt->execute([
  7. ':id' => $id,
  8. ':cena' => $cena
  9. ]);
  10. }
  11.  
  12. $pdo->commit();
Prosto, łatwo i względnie szybko.
Pyton_000
Jeżeli masz ID to możesz zorbić mass input:

  1. INSERT INTO cos (id, cena) VALUES (1, 45), (2, 46) ON DUPLICATE KEY UPDATE cena = VALUES(cena)
michaf1994
Ok. A przy okazji mam jeszcze taki problem:
Mam tabele
stanymagazynowe
id,produkt,sztuk,magazyn

i wpis z kolejno wartościami:
2,256,5,4

teraz chcę żeby 2 sztuki zostały przesłane do magazynu 10 czyli chcę mieć:
2,256,3,4
3,256,2,10

a jeżeli w magazynie 10 jest już jakiś produkt z tym id 256 to żeby zwiększyło ilość jego sztuk o te 2 z magazynu 10

jak napisać takie zapytanie SQL? w php wiem, ale chcę przenieść wszystko na sql, bo muszę używać tylko sql na studiach
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.