Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] IF NOT EXISTS, zapytanie z EXISTS
Tomplus
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
#luq
post
Post #2





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Cytat(Tomplus @ 13.02.2011, 19:20:48 ) *
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ś?
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 885
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Cytat(#luq @ 13.02.2011, 19:29:02 ) *
A więc exec chodź podejrzewam, że możesz mieć tą funkcje zablokowaną na serwerze.

Owszem.

Cytat(#luq @ 13.02.2011, 19:29:02 ) *
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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 13:42