Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Insert do dwóch tabel
cursor81
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.04.2005

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


witam,

Mam dwie tabele polączene z soba relacja 1-n czy jest możliwość wstawienia do obu tabel jednocześnie
Kod
tabela1                          tabela2
-----------                      ----------------
tabela1_ID PK                tabela2_ID PK(autonumerowanie)
tabela2_ID FK                pole1

(dla wielu rekodów tabela1 istnieje jedno z tabela2)
dla tabeli2: INSERT INTO tabela2 (pole1) VALUES('test')

i teraz bym chciala zeby jak dodaje to pole1 wstawialo mi do tabela1 vartosc tabela2_ID skad moge wiedzec jaka wartosc ma to pole jesli jest ono autonumerowane
Go to the top of the page
+Quote Post
Kinool
post
Post #2





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


klucze obce ktorych mysql jeszcze nie obsluguje (wersja 5.0 ma miec je zaimplementowane) obejscie tego problemu moze byc wykorzystanie mysql_insert_id" title="Zobacz w manualu PHP" target="_manual i zrobienie 2 zapytania INSERT


--------------------
Go to the top of the page
+Quote Post
mario
post
Post #3





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

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


lub użyć prostego zapytania:

  1. <?php
  2. $zapytanie = &#092;"SELECT id FROM oferta ORDER BY id DESC\";
  3. $result = mysql_query($zapytanie);
  4. $id = mysql_result ($result, 0);
  5. ?>


--------------------
W życiu piękne są tyko chwile....
Życie choć piękne tak krótkie jest....
Wystarczy chwila by zgasić je....
Go to the top of the page
+Quote Post
cursor81
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.04.2005

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


dzieki za trop o to mi wlasnie chodzilo smile.gif
Go to the top of the page
+Quote Post
sobstel
post
Post #5





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

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


Cytat(mario @ 2005-05-02 12:10:03)
lub użyć prostego zapytania:

  1. <?php
  2. $zapytanie = &#092;"SELECT id FROM oferta ORDER BY id DESC\";
  3. $result = mysql_query($zapytanie);
  4. $id = mysql_result ($result, 0);
  5. ?>

jendak osobiscie radzilbym uzyc rozwiazania @Kinoola z mysql_insert_id (jesli to mysql). to co napisal @mario to nic innego jak pisanie niewydajnej alternatywy dla czegos co juz wymyslone i jest do tego bardzo proste.


--------------------
"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
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%)
-----


Cytat
klucze obce ktorych mysql jeszcze nie obsluguje (wersja 5.0 ma miec je zaimplementowane)

O to dziwne bo ja uzywam w 4.x i dziala znakomicie. smile.gif (INNODB)

Cytat
obejscie tego problemu moze byc wykorzystanie mysql_insert_id i zrobienie 2 zapytania INSERT

A co z kluczami obcymi zrobisz to w jednym zapytaniu? O pierwsze slysze.

Jesli jest inaczej uswiadom mnie:)


--------------------
Go to the top of the page
+Quote Post
cursor81
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.04.2005

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


w zasadzie potrzebuje tego do ms sql i sie wlasnie pogubilam ;(
  1. CREATE PROCEDURE DodajRejestracjaPacjent
  2.  
  3. @PacjentID Int = NULL,
  4. @DataRejestracji DateTime = NULL,
  5. @OddzialNazwa VarChar(64) = NULL,
  6. @NazwaChoroby varchar(256) = NULL,
  7. @i int =NULL AS DECLARE @OddzialKod Char(10)
  8. DECLARE @RejestracjaID int
  9. DECLARE @ChorobaKod char(5)
  10.  
  11. SET @OddzialKod = (SELECT OddzialKod
  12. FROM sOddzial WHERE OddzialNazwa = @OddzialNazwa)
  13. <span style="font-weight: bold;">set @RejestracjaID = (SELECT RejestracjaID
  14. FROM tRejestracja )
  15. SET @ChorobaKod =(SELECT ChorobaKod
  16. FROM sNazwaChoroby WHERE NazwaChoroby = @NazwaChoroby)
  17.  
  18. INSERT
  19. INTO tRejestracja ( PacjentID, DataRejestracji, OddzialKod)
  20. VALUES (@PacjentID, @DataRejestracji, @OddzialKod)
  21. <span style="font-weight: bold;">
  22. IF EXISTS (SELECT OddzialKod
  23. FROM sOddzial) INSERT
  24. INTO sRozpoznania (ChorobaKod, RejestracjaID) VALUES ( @ChorobaKod, @RejestracjaID)
  25. GO

chodzii mi o ten fragment:

if exists (SELECT OddzialKod FROM sOddzial)
INSERT INTO sRozpoznania (ChorobaKod, RejestracjaID) VALUES ( @ChorobaKod, @RejestracjaID)


jak zapisac bierzace RejestracjaID ktore tworzy sie przy wstawianiu

INSERT INTO tRejestracja ( PacjentID, DataRejestracji, OddzialKod)
VALUES (@PacjentID, @DataRejestracji, @OddzialKod)


RejestracjaID jest autonumerowane w tRejestracja
-------------
ok juz znalazlam @@IDENTITY zwraca wartosc ostatniego wstawionego wiersza.

jakby kmus kiedys sie to przydalo to powinno wygladac tak zeby dzialalo :
  1. CREATE PROCEDURE DodajRejestracjaPacjent
  2.  
  3. @PacjentID Int = NULL,
  4. @DataRejestracji DateTime = NULL,
  5. @OddzialNazwa VarChar(64) = NULL,
  6. @NazwaChoroby varchar(256) = NULL,
  7. @i int =NULL AS DECLARE @OddzialKod Char(10)
  8. DECLARE @RejestracjaID int
  9. DECLARE @ChorobaKod char(5)
  10.  
  11. SET @OddzialKod = (SELECT OddzialKod
  12. FROM sOddzial WHERE OddzialNazwa = @OddzialNazwa)
  13.  
  14. SET @ChorobaKod =(SELECT ChorobaKod
  15. FROM sNazwaChoroby WHERE NazwaChoroby = @NazwaChoroby)
  16.  
  17. INSERT
  18. INTO tRejestracja ( PacjentID, DataRejestracji, OddzialKod)
  19. VALUES (@PacjentID, @DataRejestracji, @OddzialKod)
  20.  
  21. SET @RejestracjaID = (SELECT RejestracjaID
  22. FROM tRejestracja WHERE RejestracjaID = @@IDENTITY )
  23.  
  24. IF EXISTS (SELECT OddzialKod
  25. FROM sOddzial) INSERT
  26. INTO sRozpoznania (ChorobaKod, RejestracjaID) VALUES ( @ChorobaKod, @RejestracjaID)
  27. GO


Wielkie dzieki wszystkim za pomoc.

Ten post edytował cursor81 2.05.2005, 20:47:04
Go to the top of the page
+Quote Post
SongoQ
post
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%)
-----


Znalazlem jeszcze.

SELECT SCOPE_IDENTITY
IDENT_CURRENT


--------------------
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 Aktualny czas: 19.08.2025 - 09:58