ďťż

[SQL] dwuznaczne zapytanie z wykorzystaniem IF lub czegoś innego

       

Podstrony


telcocafe

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 czy on istnieje to zaktualizuje go (*2) lub wstawi nowy (*3)

*1
SELECT count(*) FROM tbl WHERE UID = {uid} AND AID = {aid};

*2
UPDATE tbl SET Cena = {cena} WHERE UID = {uid} AND AID = {aid};

*3
INSERT INTO tbl VALUES (null, {uid}, {aid}, {cena});

Mam na myśli coś takiego
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ą



A do manuala to sie juz zajrzec nei chce?
Zobacz jaka jest konstrukcja IF
do twojego uzywa sie CASE
A jezeli sie upierasz to uzyj funkcji w mysql ale tutaj kieruje na manual.

Tyle, że IF z manuala ma się nijak do tego co potrzebuję.
A tego CaSE'a to jak użyć, żeby to działało? Bo jakoś nie mogę sobie jeszcze tego wyobrazić.

Przepraszam rozpędziłem się... Case jest do selectów a nei do pytan modyfikujących dane. Do twoje zadania potrzebne jest http://dev.mysql.com...s-defining.html czyli w skrócie "mysqlowe funkcje"
Niestety nie pomoge ci w mysql poniewaz uzywam pgsql.




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 czy on istnieje to zaktualizuje go (*2) lub wstawi nowy (*3)

*1
SELECT count(*) FROM tbl WHERE UID = {uid} AND AID = {aid};

*2
UPDATE tbl SET Cena = {cena} WHERE UID = {uid} AND AID = {aid};

*3
INSERT INTO tbl VALUES (null, {uid}, {aid}, {cena});

Mam na myśli coś takiego
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ą


$wynik = mysql_query("SELECT * FROM `tbl` WHERE `UID` = 'uid' AND `AID` = 'aid'"); $ilosc_wierszy=mysql_num_rows($wynik); if (ilosc_wierszy) ==1 { cos tam } else { cos tam }
Użytkownik statjacek edytował ten post 10 październik 2008, 20:10
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.