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
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?
SELECT * FROM object_name WHERE id IN( 1,4,6...)
Kombinowalem tez zeby zrobic
SELECT * FROM tabela1 LEFT JOIN object_folder ON ( tabela1.id=object_folder.id ) LEFT JOIN object_folder2 ON ( tabela1.id=object_folder2.id ) LEFT JOIN object_folder3 ON ( tabela1.id=object_folder3.id ) LEFT JOIN object_folder4 ON ( tabela1.id=object_folder4.id ) ...
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
@join_table:=concat('object_', o.name ), @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
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;
Be aware that the following does NOT work:
SET @TABLENAME="db";
SELECT * FROM @TABLENAME;
:/