Доброго времени суток есть таблица - [sql]id|main_type| type | brand |name 1 |Сковорода|квадратная сковорода |Skepshult | pt-10 2 |Сковорода|квадратная сковорода |Skepshult | pt-11 3 |Сковорода|квадратная сковорода |Skepshult | pt-13 4 |Сковорода|квадратная сковорода |Castey | pr-10 5 |Сковорода|квадратная сковорода |Castey | pr-11 6 |Сковорода|квадратная сковорода |Castey | pr-12 7 |Сковорода|квадратная сковорода |Ballarini | pc-10 8 |Сковорода|квадратная сковорода |Ballarini | pc-11 9 |Сковорода|квадратная сковорода |Ballarini | pc-12 10|Сковорода|квадратная сковорода |Woll | pw-10 11|Сковорода|квадратная сковорода |Woll | pw-11 12|Сковорода|квадратная сковорода |Woll | pw-12 13|Сковорода|квадратная сковорода |SKK | ps-10 14|Сковорода|квадратная сковорода |SKK | ps-11 15|Сковорода|квадратная сковорода |SKK | ps-12 16|Сковорода| сотейник |Skepshult | ks-10 17|Сковорода| сотейник |Skepshult | ks-11 18|Сковорода| сотейник |Skepshult | ks-12 19|Сковорода| сотейник |Castey | kt-10 20|Сковорода| сотейник |Castey | kt-11 21|Сковорода| сотейник |Castey | kt-12 22|Сковорода| сотейник |Ballarini | kl-10 23|Сковорода| сотейник |Ballarini | kl-11 24|Сковорода| сотейник |Ballarini | kl-12 25|Сковорода| сотейник |Woll | kf-10 26|Сковорода| сотейник |Woll | kf-11 27|Сковорода| сотейник |Woll | kf-12 28|Кастрюля | ковш |SKK | ct-10 29|кастрюля | Кастрюля |SKK | ct-11 30|кастрюля | казан |SKK | ct-12[/sql] Теперь самое счастье=) Мне нужно получить в результате запроса [sql]|name | |pt-10| |pr-10| |pc-10| |pw-10| |ps-10| |ks-10| |kt-10| |kl-10| |kf-10| |ks-10|[/sql] Т.е. Мне нужно получить 5 элементов для каждого поля type так что бы каждый из этих элементов относился к разным брендам. Но(!), брендов с такими полем type меньше 5, то он должен начать проходить их по кругу. При этом какой именно элемент он возьмёт меня не очень волнует(pt-10 или pt-11), но надо что бы каждый раз это был один и тот же набор элементов. Вот. Все мои идеи сводятся ко всяким циклическим обработкам Всей таблицы. т.к. она совсем не маленькая хотелось бы поизящней. Буду крайне благодарен всем тем, кто окажет помощь=)
10|Сковорода|квадратная сковорода |Woll | pw-10 10|Сковорода|квадратная сковорода |SKK | ps-10 это как?
от 1го до 5ти запросов. первый GROUP BY "бренд" второй и последующие (если недобрали нужных элементов), такие же но с условием NOT IN(список выбранных индексов в предыдущих запросах). Мда, но худший вариант это 1 бренд на всю группу - тогда стреляйтесь, 5ть запросов. Хотя можно сделать финт ушами. Посчитать число брендов в 1м запросе. И если он 1 то можем просто запросить недостающее число записей 1м запросом. Тогда имеем от 1го до 4х запросов. P.S. как вариант - не страдать фигней и выбрать в цикле на стороне скрипта. Ну или хранимку на SQL сервере.
Simpliest мдя... для того что бы понять рекурсию надо понять рекурсию =) Спасибо)) Так делать и придётся)) А я наделся на какие-нибудь мало известные штучки от гуру)) ладно, будем по простому, по рабоче-крестьянски))
KISS - делай это просто, но не проще. В такой постановке это задача не для SQL, хотя ее и можно решить на нем.