Заявка към БД

eddyy93

Registered
Здравейте.

Имам 2 таблици като начало:

table1 [

id(int 11) - name(varchar 50) - state(bool)
------------------------------------------------------------------
1 ---------- table5 -------------------- 1
------------------------------------------------------------------
2 ---------- table6 -------------------- 1
------------------------------------------------------------------
3 ---------- table7 -------------------- 0
------------------------------------------------------------------

]

table2 [
-------------------- (table1)
id(int 11) - parrent_id(int 11) - name(varchar 50) - state(bool)
------------------------------------------------------------------------------------
1 ---------- 1 -------------------- somefield1 -------------------- 1
------------------------------------------------------------------------------------
2 ---------- 1 -------------------- examplefield2 ----------------- 1
------------------------------------------------------------------------------------
3 ---------- 3 -------------------- testfield1 -------------------- 0
------------------------------------------------------------------------------------

]


Тези две таблици трябва да изведат следният резултат:

[table1.name][table2.name]

Това спрямо:
table1.id = table2.parrent_id AND table1.state = 1 AND table2.state = 1

Направил съм ето това като заявка:

[sql]
SELECT * FROM `table1` m
LEFT JOIN table2 mL
ON m.id = mL.id
AND m.state = 1
AND mL.state = 1
ORDER BY m.id
[/sql]

До тук добре.

Сега на базата на [table1.name] със [table1.state = 1] трябва да селектирам неопределен брой таблици(в зависимост от това колко резултата от table1 имат state = 1). Тоест имам селектирани да кажем 3 резултата с table.name(с имена) - table5, table6, table7 etc.

Тези table5, table6 и table7 трябва да селетират таблици със съответните имена: table5, table6, table7 и след като ги селектират трябва да се селектират съответните полета, взети от [table2.name] спрямо [table1.id = table2.parrent_id] и [table2.state = 1]

Ето пример как изглежда една такава таблица(table5):

table5 [
-------------------- (table1)
id(int 11) parrent_id(int 11) somefield1(varchar 50) examplefield2(varchar 50)
------------------------------------------------------------------------------------
1 --------------- 1 -------------------- tettetetetet --------------- tet
------------------------------------------------------------------------------------
2 --------------- 1 --------------- etetetetetetet --------------- teet
------------------------------------------------------------------------------------
3 --------------- 3 --------------- asdsadsa --------------- tet
------------------------------------------------------------------------------------

]


Тоест имената от полето table2.name трябва да отговаря на съответното поле в таблица селектирано от резултата на table1.name.

Всичко това ми трябва в една заявка. Пробвах с GROUP_CONCAT(DISTINCT ...) ама нещо се обърква жестоко.

Това със неопределения брой селектиране на таблици най - вероятно ще стане с някакъв цикъл в sql, но си нямам идея, не съм правил подобно нещо.

Не трябва да има въобще намеса на друг език, единствено SQL.
 

Back
Горе