Обща заявка за взимане на резултати от 3 таблици

dgeorgiev

Registered
Здравейте,
целта ми е с 1 заявка да направя така че да вади резултат от 3 таблици в случая са 'pomagala', 'testove', 'prezentacii', като трябва да има и условие (where) т.е. където в полето 'predmet' е равно на дадено нещо (взимам от $_GET променлива). Цялата работа е ако имам примерно материал в помагало в предмет "математика", но имам и тест в този предмет, да ги показвам на една и съща страница. Пробвах да сложа и трите таблици в 'from' клаузата, без резултат при подаване на where клауза ми бие че полето 'predmet' го има в трите таблици и че не може да го вземе, пробвах на where да задам 'pomagalo.predmet' за пример - работи си, но като добавя още 1 where с 'testove.predmet' увисва. Пробвах с разни joint, но отново без никакъв резултат.
Работя с codeigniter, но дори само и идея да се даде може би ще успея да я направя сам към вида на codeigniter заявките.
Малко объркано е описанието на проблема, та ако нещо не се разбира моля питайте да се надяваме на някой от вас да му хрумне идея :lol:
 
Трябва да използваш UNION ALL

[sql]select 'pomagala' as t, id, title from pomagala where predmet='matematika'
union all
select 'testove', id, title from testove where predmet='matematika'
union all
select 'prezentacii', id, title from prezentacii where predmet='matematika'[/sql]

Това ще ти даде таблица изглеждаща така:

Код:
T                       ID              Title
'pomagala'    1                 Синус/косинус
'pomagala'    2                 Питагорова теорема
'testove'        1                 Тригонометрия
'prezentazii'  1                 Презентация на .....

Забележи че в първото поле си слагаме "изкуствен" маркер от коя таблица е реда, защото като правиш интерфейса ще трябва да знаеш как да създадеш линка към съответния ресурс, а ID-тата ще ти се повторят в различните таблици.
 
Мисля, че работи точно както трябва, но да питам всичките полета трябва да ги пиша или има начин да избера всичките полета понеже аз не успях нещо да се справя.
 
Добра практика е да ги пишеш като правиш обединения, но по принцип можеш да използваш и *, но само ако таблиците ти имат еднаква структура. Ако си опишеш полетата се застраховаш, че някой ден когато промениш структурата това ще продължи да работи.
 
Благодаря много, в крайна сметка точно това ми свърши перфектна работа. За codeigniter-а просто пишем това дето даде @palex като $this->db->query("тука заявките") и си работи както трябва, отново благодаря :P
 

Back
Горе