SELECT из таблицы, имя которой хранится в ячейке другой таблицы...

Pietrovich

Guest
SELECT из таблицы, имя которой хранится в ячейке другой таблицы...

возможен ли сабж одним запросом, или никак?

собсно для чего нужно:
есть 3 части:
1 таблица в которой хранятся общие для всех типов событий поля (номер, тип, дата и т.д.),
2 таблица в которой хранится названия событий для первой таблицы (varchar который редко юзается)
3 десятка таблиц со специфическими для разных типов событий данными (количество колонок, типы колонок)

хотелось бы 1ю и одну из 3их джойнить одним запросом, но никак не могу его скрутить....
 

Demiurg

Guest
а в чем проблема встала ?
select * from t1 , t2 where t1.id = t2.t1_id
 

Pietrovich

Guest
>select * from t1 , t2 where t1.id = t2.t1_id

t2 это кучка таблиц с разными именами, из которой нужно выбрать подходящую к типу события для объединения...

не могу же я попросить муСКЛ "а выберика мне из той таблички из этого списка, в которой есть строчки, подходящие для этого 'родителя' "

вопрос как раз в том, можно ли каким то образом использовать к качестве имени таблицы данные из другой таблицы... или никак?
 

Demiurg

Guest
нука по подробнее расскажи про свою структуру, сдается мне, что дизайн базы сильно поколеченый.
 

Pietrovich

Guest
сдается мне, что дизайн базы сильно поколеченый. [/B]
спорить не стану, вполне возможно... я пока все еще в раздумиях...

значит что это такое:
если в курсе про букмекеров думаю поймеш...
мне нужно импортировать к себе Линию (список событий, возможные виды ставок на события и кэфы к ним)

виды ставок зависят от типа события. т.е. на футбольный матч принимаются одни виды ставок а на бокс другие... т.е. на футбол нужно 20 колонок а на бокс всего 3...

можно пойти двумя путями:
побить события на подобные группы и загонять кэфы в таблицу соответствующей группы, либо сделать одну универсалюную таблицу в которой перечислены все варианты а ненужные колонки просто забиваются NULLями...

основная работа ведется с номером события и кефами которые ему соответствуют... одновременная выборка всей инфы по событию происходит гораздо реже...
причем в основном все запросы это SELECT...

мне первый вариант показался более привлекательным... хотя я и второй тоже пиасть буду, а потом сравню как оптимальнее...

З.Ы.: в часы пик кол-во юзеров на сайте одновременно будет около 100 человек... машина конечно мощная и все стерпит, но хотца чтобы машина напрягалась по минимуму...
 

Demiurg

Guest
А сколько всего этих видов ставок и будут ли их количество увеличиваться ?
 

Pietrovich

Guest
>А сколько всего этих видов ставок

групп около 10, я еще точно и сам не разобрался, жду когда буки ответят...

для описания всех видов ставок и кэфов к ним нужно около 30 колонок

>будут ли их количество увеличиваться?
будут. нужно будет еще несколько видов сорта со временем добавить....
+ очень скоро нужно будет
вкручивать еще и ставки на "неспрортивные" события... курсы валют и еще какая-то херня...

т.е. это орднозначно увеличит колво колонок если использовать общую таблицу...

-----------------------------------------------------
количество одновременно обрабатываемых событий думаю не будет превышать 400-500, иногда меньше, но вряд-ли больше ...
после истечения срока я их в другую БД сливать буду, а новые обчно появляются не раньше чем за 3-5 дней...
 

Demiurg

Guest
Что то я не понимаю всех этих терминов, и тем более что и как к чему относится, так что помоч наверно не смогу, сорри.
 

nRay

Guest
Исключительно интересная тема.
Что касается "возможен ли сабж одним запросом, или никак?"
нет не получится.

Что касается "можно пойти двумя путями:"
есть и третий вариант - таблица ключ-значение (три поля).
Плюс - отвязываемся от количества видов ставок.
Минус -сложные запросы, когда необходимо выбрать несколько ставок одинакового вида, куча джоинов, точно не помню, но когда эксперементировал получалось один джоин на поле.
Хотя, с другой стороны, задачка по составлению таких запросов несложно(?) формализируется, можно написать функцию расширения для типовый классов работы с бд.

ПС: А вообще тема много раз поднималась на форуме, но собрать всё воедино, как-то не получилось до сих пор. Думаю, прекрасная тема, для тех кто хочет отвлечься от кодинга и написать пару статей.
 

Pietrovich

Guest
>нет не получится.
да я и сам дошел... теперь меня больше интересует как лучше БД спректировать...

>Что то я не понимаю всех этих терминов, и тем более что и как к чему относится
придумал!
линия - склад
событие - быстопортящийся товар.
товары бывают нескольких категорий.
каждая категория описывается опреденным количеством характеристик.

теперь вопрос стоит так. выделить ли на характеристики по отдельной таблице для категории или слепить в одну большую в которой часть колонок не будет использоваться рядлом категорий, точнее ни одна категория не будет использовать ВСЕ колонки одновременно.

причем с учетом того что ассортимент иногда расширяется, т.е. возможно добавления новых категорий со своими дополнительными характеристиками....

ого как я завернул... сам на это дело взглянул по новому :)
 

fixxxer

К.О.
Партнер клуба
Нифига в этой области не понимаю, но из того, что прочитал, могу посоветовать не городить таблицы, а использовать отдельную таблицу для хранения различных параметров и промежуточную для отношений "многие ко многим" между таблицей, хранящей основные данные, и таблицей со значениями дополнительных параметров.
 

chira

Новичок
к сказанному fixxxer-ом , думаю он это имел ввиду:
Код:
.-------.   .---------.   .-------------.
|События|--<|Категории|--<|Набор свойств|
'-------'   '---------'   '-------------'
    |   .-----------------.      |
    '--<|Значения свойства|>-----' 
        '-----------------'
 

Demiurg

Guest
вообщето это все называется двоичными базами. Может просто про них где нить почитать ?
 
Сверху