Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Połączenie wielu tabel
Ace
post 25.05.2005, 11:06:16
Post #1





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


Hej mam nastepujacy problem, mianowicie mam sobie pewna strukture bazy

id|...| object_name

object_name okresla tabele z ktorej mam wybrac dane... mam kilka tabel object
np
object_folder,
object_article

struktura tych tabel jest po czesci podobna, gdyz posiadaja pole
id relacja miedzy tabelami jest prosta id <-> id chodzi o to ze w tej chwili nie potrafie jednym zapytaniem wyciagnac wszystkich dnaych z 1 tabeli i odpowiednio dolaczyc dane z odpowiedniej tabeli object. W chwili obecnej wykonuje do kazdego rekordu dodatkowe zapytanie, co nie jest efektywne. Moglbym tez zebrac wszystkie id z pierwszej tabeli i wykonac zapytanie
  1. SELECT *
  2. FROM object_name WHERE id IN( 1,4,6...)
co da w efekcie ze na jeden rodzaj obiektu wykonam jedno zapytanie a nie wiele, jednak to tez potrafi wygenerowac duzo zapytan. Czy jest wlasnie mozliwosc wykonania takiej relacji w jednym zapytaniu?

Kombinowalem tez zeby zrobic
  1. SELECT
  2. *
  3. FROM tabela1 LEFT JOIN object_folder ON ( tabela1.id=object_folder.id )
  4. LEFT JOIN object_folder2 ON ( tabela1.id=object_folder2.id )
  5. LEFT JOIN object_folder3 ON ( tabela1.id=object_folder3.id )
  6. LEFT JOIN object_folder4 ON ( tabela1.id=object_folder4.id )
  7. ...


ale nie wiem czy to nie zajezdzi bazy...

Dodatkowa wskazowka jest to ze jeden wpis z tabeli pierwszej (ID) istnieje tylko w jednym obiekcie

pozdrawiam...

EDIT
  1. @join_table:=concat('object_', o.name ),
  2. @join_table AS object_name

ustawiam sobie w SELECT zmienna w sposob powyzszy OBJECT_NAME ma wartosc
i jest ok... poprawnie przypisuje mi zmodyfikowana wartosc do zmiennej
poprawna, wiec teraz musze tylko wstawic ja w JOIN, ale
  1. LEFT JOIN @join_table AS jt ON ( tabela1.id=jt.id )

Z tym ze wysypuje sie blad skladniowy

znalazlem adnotacje w manualu mysql
Cytat
http://dev.mysql.com/doc/mysql/en/variables.html

Be aware that the following does NOT work:
SET @TABLENAME="db";
SELECT * FROM @TABLENAME;

:/

Ten post edytował Ace 26.05.2005, 01:08:51
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: 21.06.2025 - 15:29