Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 885 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%)
|
Witam,
Mam pytanie, Chciałem skrócić kod i wpadłem na pomysł że to co mogę w paru liniach zrobić w PHP mogę w jednej linii zrobić w MYSQL, ale.... coś nie wychodzi. Mam nast. zapytanie SQL: Kod IF NOT EXISTS SELECT `uid`,`link` FROM `link_logs` WHERE `uid` = '67' AND `link` = '0' THEN INSERT INTO `link_logs` (`uid`, `link`) VALUES ('67', '0') END IF; wypróbowałem też zapytanie bez IF: Kod INSERT INTO `sm_link_logs` (`uid`, `link`) VALUES ('67', '0') WHERE NOT EXISTS ( SELECT `uid`,`link` FROM `sm_link_logs` WHERE `uid` = '67' AND `link` = '0' ); Wg. tego co się dowiedziałem to w ten sposób powinno wyglądać zapytanie. Jednak nie pojawia się żaden błąd MySQL (co sugeruje mi że nie ma błędu parsera w zapytaniu) ale jest błąd logiczny bo mimo że tabela jest pusta, Nie pojawia się nowa liniia. z założenia jest że jeżeli nie istnieje uid i link o podanych wartościach to ma stworzyć nową wartość w tabeli o takich wartościach. Wiedzę na ten temat znalazłem tu: http://forums.mysql.com/read.php?98,33383,33784#msg-33784 oraz http://lists.mysql.com/replication/220 Prosiłbym o pomoc przy tym zapytaniu. Ten post edytował Tomplus 12.02.2011, 19:39:55 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%)
|
Nie mam konsoli do MySQL, bo jedyny dostęp do serwera MySQL to PHPMyAdmin, lub polecenia z plików PHP A więc exec chodź podejrzewam, że możesz mieć tą funkcje zablokowaną na serwerze. Cytat Gdybym dał UNIQE to zwracałoby mi błąd za kazdym razem gdy powtórzył się uid, nawet jeżeli jest inny link. Jesteś tego pewien? Sprawdzałeś? |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 1 885 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%)
|
A więc exec chodź podejrzewam, że możesz mieć tą funkcje zablokowaną na serwerze. Owszem. Jesteś tego pewien? Sprawdzałeś? To było sprytne (IMG:style_emoticons/default/smile.gif) W pierwszej chwili zrozumiałem że należy dać UNIQUE dla uid i link, ale osobno dla kolumn. ale nie zwróciłem uwagi na to że wartość UNIQUE może być współdzielona. Dziękuje #luq, może wynik nie jest taki jak zapytałem, ale rozwiązanie jest bardzo dobre. Dziekuje również trafas'owi, mimo że Twoje rady nie dało się wykorzystać przy moich uprawnieniach. Ten post edytował Tomplus 13.02.2011, 19:47:18 |
|
|
|
Tomplus [MYSQL] IF NOT EXISTS 12.02.2011, 18:31:34
trafas Witam,
W mysql EXISTS tak prosto się nie używa.
... 12.02.2011, 20:19:29
Tomplus oczywiście procedur nie da się wykonać w zapytaniu... 13.02.2011, 13:01:25
trafas Pierwszy przykład nie umożliwi Ci wprowadzenia dan... 13.02.2011, 14:58:26
Tomplus Bardzo ładnie, tylko nie działa... :/
Tzn. pewnie ... 13.02.2011, 15:15:23
trafas Po wykonaniu kodu tworzącego procedurę czy funkcję... 13.02.2011, 17:46:27
Tomplus Wykonuje więc w moim PHPMyAdmin kod:
[SQL] pobie... 13.02.2011, 18:52:45
#luq Cytat(Tomplus @ 13.02.2011, 18:52:45 ... 13.02.2011, 19:07:30
Tomplus Nie mam konsoli do MySQL, bo jedyny dostęp do serw... 13.02.2011, 19:20:48 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 13:42 |