![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 11.07.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem jak skonstruować zapytanie do bazy tak, żeby sprawdziło, czy rekord o podanych danych istnieje w tabeli (*1) i w zależności od tego zaktualizuje go (*2) lub wstawi nowy (*3)
*1 Kod SELECT count(*) FROM tbl WHERE UID = {uid} AND AID = {aid}; *2 Kod UPDATE tbl SET Cena = {cena} WHERE UID = {uid} AND AID = {aid}; *3 Kod INSERT INTO tbl VALUES (null, {uid}, {aid}, {cena}); Mam na myśli coś takiego Kod IF (SELECT count(*) FROM tbl WHERE UID = {uid} AND AID = {aid}) > 0 THEN UPDATE tbl SET Cena = {cena} WHERE UID = {uid} AND AID = {aid} ELSE INSERT INTO tbl VALUES (null, {uid}, {aid}, {cena}) END IF {uid}, {aid}, {cena} - jakies dane przekazane z php'a Niestety takie coś nie działa i wyrzuca błąd, a nie chcę do tego angażować php'a bo wg założenia to MySQL ma zająć się tą sprawą |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
cytuję z manuala MySQL:
Cytat REPLACE Syntax REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... Or: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name SET col_name={expr | DEFAULT}, ... Or: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] SELECT ... REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted. na marginesie, czy używanie google i przeglądanie manuali jest naprawdę tak trudne...? -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 6 Dołączył: 23.09.2008 Skąd: Chorzów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 11.07.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Używanie googla nie jest takie trudne ale nie zawsze on daje wynik taki jak by się chciało, a poza tym trzeba wiedzieć jak sprecyzować zapytanie. Ja szukałem konstrukcji IFa, ale rezultaty działania były nijakie.
REPLACE jakimś cudem dorzucało mi następny wpis więc sobie darowałem. Zastosowałem składnię Kod INSERT INTO tbl VALUES (NULL, '{uid}', '{aid}', '{cena}', NOW()) ON DUPLICATE KEY UPDATE CenaL='{$cena}', Data = NOW(); i to działa bardzo ładnie i dziękuję serdecznie wam obu a w szczególności nrafal za odpowiedni link |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:29 |