Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> insert i sprawdzenie czy rekordu juz nie ma?
evo
post 27.04.2005, 22:01:57
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 4.02.2003

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


1.
czy INSERT ma jakas opcje by dodal wpis tylko wtedy gdy takiego jeszcze nie ma, czy trzeba samemu poprzez SELECT wpierw sprwadzic czy danego wpisu jeszcze nie ma w bazie i jesli tak jest to dodac wpis?


Drugie pytanie to:

mam tabele A a w niej nazweA i idA, oraz tabele B a w niej idB, nazwaB i idA

Teraz znam nazweA i che wydobyc nazweB z tabeli B gdzie idA jest takie jakie idA w tabeli A gdzie nazwaA jest taka jak to co znam winksmiley.jpg

Czy musze zadac dwa zapytania czy jest mozliwe zrobienia
tego w jednym?

Z gory dziekuje i pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
SongoQ
post 27.04.2005, 22:13:32
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Ad 1. Niestety INSERT nie ma takiej wlasciwosci, moglbys robic np przez jakas funkcje ktora by to sprawdzala, ale jesli jest to MySQL to odpada.

Ad 2.
  1. SELECT *
  2. FROM tabela_a, tabela_b WHERE tabala_a.id = tabela_b.relacja_do_tabeli_a


--------------------
Go to the top of the page
+Quote Post
zalew
post 27.04.2005, 22:24:20
Post #3





Grupa: Zarejestrowani
Postów: 407
Pomógł: 0
Dołączył: 24.10.2002
Skąd: warszawa

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


1. dac polu, ktore ma sie nie powtarzac unique


--------------------
Go to the top of the page
+Quote Post
SongoQ
post 27.04.2005, 22:46:32
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
1. dac polu, ktore ma sie nie powtarzac unique


Tego tak nie wyeliminujesz bo baza zwraca wtedy blad. Jedyne wyjscie to transakcja i sprawdzic a nastepnie dodac


--------------------
Go to the top of the page
+Quote Post
sobstel
post 27.04.2005, 23:17:51
Post #5





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


mozna zrobic UPDATE i sprawdzic affected_rows. jesli rowne jest 0 to wtedy INSERTA. troszke wydajniejsze bo nie trzeba zawsze 2 zapytania (SELECT+INSERT).


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
SongoQ
post 28.04.2005, 09:58:08
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@sopel Podaj konkretny przyklad bo nie bardzo Cie zrozumialem w czym to by mialo przyspieszyc.


--------------------
Go to the top of the page
+Quote Post
sobstel
post 28.04.2005, 10:54:36
Post #7





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


sorry, doczytalem dobrze watek i chodzi tylko o dodanie gdy nie istnieje w bazie. natomiast ja pisalem o sytuacji gdy chcemy dodac gdy nie istnieje lub zaktualizowac gdy istnieje (np. jak ma to miejsce piszac wlasnego handlera sesji).

standardowo :
krok 1 - robisz SELECT i sprawdzasz czy rekord juz jest w bazie
krok 2- wtedy jest INSERT lub UPDATE

inna opcja
krok 1 - robisz UPDATE
krok 2 - if (affected_rows ==0) INSERT


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
SongoQ
post 28.04.2005, 11:01:38
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


He he no to teraz ok. Strasznie sie zdziwilem co napisales wczesnie i dlatego zapytalem. No ale inaczej efektywnie sie nie da. W bazach z mozliwosci uzycia PL/SQL pisze sobie funkcje ktore mi poszczegolne rzeczy realizuja na bazie danych, mniej odwolan leci do serwera, szybciej, bezpieczniej.


DODANE:
Odnoscnie handlera sesji na Postgresie o Oraclu mam napisane na funkcji i steruje parametrami. (Jaki PL/SQL jest wspanialy hihihihi)

Ten post edytował SongoQ 28.04.2005, 11:03:12


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:01