michaf1994
12.10.2014, 12:16:09
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
12.10.2014, 12:38:58
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
12.10.2014, 12:40:27
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ę:
$stmt = $pdo->prepare('UPDATE tabela SET cena = :cena WHERE id = :id');
$pdo->beginTransaction();
foreach ($dane as $id => $cena) {
$stmt->execute([
':id' => $id,
':cena' => $cena
]);
}
$pdo->commit();
Prosto, łatwo i względnie szybko.
Pyton_000
12.10.2014, 13:15:11
Jeżeli masz ID to możesz zorbić mass input:
INSERT INTO cos (id, cena) VALUES (1, 45), (2, 46) ON DUPLICATE KEY UPDATE cena = VALUES(cena)
michaf1994
12.10.2014, 19:58:57
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