![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki mini problem.
Dodaję sobie listę użytkowników z adresami email. W bazie przechowuję oddzielnie adresy email (z innymi danymi), a oddzielnie dane danego użytkownika (wraz z innymi danymi). Struktura w uproszczeniu wygląda tak: USR (ID, NAME ....) USR_MAILS (USR_ID, EMAIL ....) (USR_ID wskazuje na tablę USR pole ID ![]() Teraz chciałbym aby dodawanie użytkowników przebiegało w możliwie jak najmniejszej liczbie zapytań. Co do samego INSERT dla USR to sprawa jest prosta (w uproszczeniu):
Natomiast dodawania maili do USR_MAILS w jednym zapytaniu już nie potrafię stworzyć. Mam 2 rozwiązania: 1. Iterując po odbiorcach mogę tworzyć INSERT ... SELECT dla USR_MAILS i podawać w parametrze nazwę 2. Pobierać lastInsertId, i dodawać do drugiego zapytania (jednak wtedy pierwsze zapytanie musiałoby być oddzielnie dla każdego wpisu) Macie może pomysły na jakieś inne rozwiązanie? Jest jakaś opcja INSERT wraz z JOIN? Bo jak na razie mam 1 zapytanie dla USR i n zapytań dla USR_MAILS lub n zapytań dla USR i jedno zapytanie dla USR_MAILS. Ten post edytował vokiel 15.10.2009, 09:47:34 -------------------- |
|
|
![]() |
![]() ![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 53 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
ale chodzi Ci o to, żeby w PHP mieć jedno zapytanie? Bo przecież wydajnościowo Twoje jedno zapytanie jest takie samo jak x insertów. Jeżeli chcesz mieć jedno zapytanie w php to zrób to cursorem na przekazanych danych
//edit chodzi o to, żeby w MySQL napisać funkcję do której przekażaesz dane a w samej funkcji przetworzysz je jak arraya normalnego (przez coś ala split) i przelecisz w pętli po danych Ten post edytował jmail 15.10.2009, 10:43:51 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 15:14 |