Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykorzystanie tablicy php w bazie MySQL
Forum PHP.pl > Forum > PHP
cudny
Witam

Zastanawiam się nad użyciem tabeli tymczasowej (create temporary table).
Niestety nie jest to najbardziej wydajny sposób aby tworzyć tabelę w locie i wpisywać do niej dane, więc stąd moje wątpliwości.
Chodzi o to, że mam w tablicach zapisane dane powiedzmy tak jak poniżej:
  1. $table[] = array('id' => 1, 'czas' => "2010-02-25 15:00:00");
  2. $table[] = array('id' => 1, 'czas' => "2010-02-25 16:00:00");
  3. $table[] = array('id' => 2, 'czas' => "2010-02-25 17:00:00");
  4. $table[] = array('id' => 3, 'czas' => "2010-02-25 18:00:00");
  5. $table[] = array('id' => 3, 'czas' => "2010-02-25 19:00:00");
  6. $table[] = array('id' => 3, 'czas' => "2010-02-25 20:00:00");
  7. $table[] = array('id' => 4, 'czas' => "2010-02-25 18:00:00");

Do tego jest jest tabela w bazie MySQL do której chciałbym utworzyć złączenie (left join) poprzez id.
Moja koncepcja jest taka, że tworzę tabelę tymczasową i insertuję do niej wszystkie pozycje tablicy, no i potem mogę sobie utworzyć to moje upragnione złączenie.

Moje pytanie jest następujące:
Czy zna ktoś inny sposób wykorzystania tablicy z php w bazie MySQL ?

pzdr
Cudny











nospor
A napisz jeszcze po co ci to złączenie.
Pilsener
Możliwości masz dwie:
1. Użycie IN:
  1. SELECT * FROM tabela WHERE pole IN(23,45,67)
- gdzie te identyfikatory scalasz:
  1. $id = join(",",$tablica);

Czyli wrzucasz elementy tej tablicy bezpośrednio do zapytania, które potrzebujesz

2. Użycie LOAD DATA... - po prostu zapisujesz tablicę jako plik .csv i wrzucasz od razu do bazy jednym zapytaniem korzystając z instrukcji LOAD DATA IN FILE - jest to od 2 do 10 razy szybsze od insert (w zależności od potrzeby obróbki pliku, liczby indeksów etc.)

Edit: nie to bbcode winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.