Задачка

grin

Guest
Задачка

Имеем:
Table (Mysql)
id | pid | name
-----------------------------------
1 | 1 | A1
2 | 1 | A2
3 | 1 | A3
4 | 1 | A4
5 | 2 | B1
6 | 2 | B2
7 | 3 | C1
8 | 3 | C2
9 | 3 | C3

Shablon
pid_in_table=1 / pid_in_table=2 / pid_in_table=3

т.е. надо вывести:
A1 / B1 / C1
A1 / B1 / C2
A1 / B1 / C3
A1 / B2 / C1
A1 / B2 / C2
..............
A4 / B2 / C3

Как это сделать? я конечно понимаю что эта задачка из "Курс бейсика для детей младшего школьного возраста", но, млин, не могу придумать....
Одна надежда на вас :)
 

Demiurg

Guest
select t1.name , t2.name , t3.name from table t1 , table t2 , table t3
where t1.pid = 1 and t2.pid = 2 and t3.pid = 3
 

grin

Guest
кхм.... все A, B, C в одной таблице, или я чего-то не догоняю....
 

Demiurg

Guest
что не понятно. запрос дает то, что от него ждали ?
 

grin

Guest
супер, и правда дает что от него ждали... а я тут млин кучу for`ов и if`ов понатыкал....

вообщем огромный сенкс...
 

grin

Guest
Продолжение истории

есть еще одна таблица
table_z
id | z1 | z2
1 | 2 | 3
2 | 1 | 4
и т.д.
z1 и z2 это id из запостенной выше таблицы
надо к запросу
select t1.name , t2.name , t3.name from table t1 , table t2 , table t3
where t1.pid = 1 and t2.pid = 2 and t3.pid = 3
что-нить добавить чтобы он выводил только те вещи которые НЕ СОВПАДАЮТ с z1 и z2
т.е.
есть вывод
A1 (id=1) / B1 (id=5) / C1 (id=7)
смотрим таблу table_z и если там например z1 = 1 AND z2 = 5, то не выводим запись....
это можно в один запрос всунуть? сделал в два запроса, тормознуто получается, выборка около 4 сек.
 

Demiurg

Guest
легче всего это сделать наверно через временную таблицу. засовываешь результат того запроса во временную таблицу, потом.

select * from temp_table left join table_z on a = z1 and b = z2 where table_z.id is null
 
Сверху