![]() |
![]() |
![]()
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...? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 18:38 |