Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас логика выборки из этих таблиц полностью на уровне пхп, но это не очень эффективно. Могу ли я делать джоин таких таблиц? И если да то как?
> Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем
> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
> логика выборки из этих таблиц полностью на уровне пхп, но это
> не очень эффективно. Могу ли я делать джоин таких таблиц? И
> если да то как?так как обычно такие вопросы задают похапысты, ваяющие под мускул, то приведу пару ссылок:
http://dev.mysql.com/doc/refman/5.5/en/select.html и дальше по ссылкам, в частности
http://dev.mysql.com/doc/refman/5.5/en/join.html
>> Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем
>> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
>> логика выборки из этих таблиц полностью на уровне пхп, но это
>> не очень эффективно. Могу ли я делать джоин таких таблиц? И
>> если да то как?
> так как обычно такие вопросы задают похапысты, ваяющие под мускул, то приведу
> пару ссылок:
> http://dev.mysql.com/doc/refman/5.5/en/select.html и дальше по ссылкам, в частности
> http://dev.mysql.com/doc/refman/5.5/en/join.htmlЗдравствуйте Павел, да совершенно верно php+mysql я был по этим ссылкам, тут нет подобных примеров. Как приклеить по ключу я знаю а вот как приклеить ключ к имени таблицы я не знаю и тут об этом ничего не сказано.
> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчасничего не понятно
у вас что 18 разных таблиц категорий?
>> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
> ничего не понятно
> у вас что 18 разных таблиц категорий?Именно так.
> Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем
> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
> логика выборки из этих таблиц полностью на уровне пхп, но это
> не очень эффективно. Могу ли я делать джоин таких таблиц? И
> если да то как?Вы хотите сджойнить две таблицы, но название одной из них на момент составления запроса неизвестно. Это название должно быть получено в ходе выполнения запроса. Я правильно понял мысль?
Если да, то средствами SQL так сделать нельзя, и, вероятно, у вас ошибка при проектировании БД.
>> Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем
>> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
>> логика выборки из этих таблиц полностью на уровне пхп, но это
>> не очень эффективно. Могу ли я делать джоин таких таблиц? И
>> если да то как?
> Вы хотите сджойнить две таблицы, но название одной из них на момент
> составления запроса неизвестно. Это название должно быть получено в ходе выполнения
> запроса. Я правильно понял мысль?
> Если да, то средствами SQL так сделать нельзя, и, вероятно, у вас
> ошибка при проектировании БД.Так и есть, все верно поняли. Эх, жаль, я был почти на 100% уверен что нельзя но теперь на все 100% спасибо всем.
Привет,>> Вы хотите сджойнить две таблицы, но название одной из них на момент
>> составления запроса неизвестно. Это название должно быть получено в ходе выполнения
>> запроса.Теория говорит, что при поддержке вложенных селектах это можно составить - что-то вроде
SELECT ... JOIN (SELECT ...))Будет ти это быстрее PHP (и вообще умеет ли мускул такое) не ручаюсь - если очень надо, попробуйте.
Хотя коллега, говоривший об ошибочном строение базы, конечно, прав.
WWell,
> Если да, то средствами SQL так сделать нельзя,Да можно все, тоже мне - бином ньютона...
Делается процыдурка, принимающая на вход известные на момент исполнения названия таблиц, и выполняющая внутре себя PREPARE-EXECUTE-DEALLOCATE. Костыль монументальный, конечно, но, тем не менее, работать будет 100%. Как паллиатив при кривой архитектуре базы - приемлемо, но в следующей версии от этой байды надо будет избавляться любыми средствами.
> Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем
> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
> логика выборки из этих таблиц полностью на уровне пхп, но это
> не очень эффективно. Могу ли я делать джоин таких таблиц? И
> если да то как?вот так можно условием и подзапросом, но это вырвиглазно
делаете запрос
select
data --ваш столбец из основной таблицы
,--столбец с подзапросами
case
when categories=1 then (select top 1 name from subcategory_1 where id=categories)
when categories=2 then (select top 1 name from subcategory_2 where id=categories)
when categories=3 then (select top 1 name from subcategory_3 where id=categories)
--и так стопицот раз
else 'wtf im doing here'
endfrom [ваша_супер_пупер_мега_таблица]
>[оверквотинг удален]
> data --ваш столбец из основной таблицы
> ,--столбец с подзапросами
> case
> when categories=1 then (select top 1 name from subcategory_1 where id=categories)
> when categories=2 then (select top 1 name from subcategory_2 where id=categories)
> when categories=3 then (select top 1 name from subcategory_3 where id=categories)
> --и так стопицот раз
> else 'wtf im doing here'
> end
> from [ваша_супер_пупер_мега_таблица]Именно таким образом сейчас и есть)
>[оверквотинг удален]
>> ,--столбец с подзапросами
>> case
>> when categories=1 then (select top 1 name from subcategory_1 where id=categories)
>> when categories=2 then (select top 1 name from subcategory_2 where id=categories)
>> when categories=3 then (select top 1 name from subcategory_3 where id=categories)
>> --и так стопицот раз
>> else 'wtf im doing here'
>> end
>> from [ваша_супер_пупер_мега_таблица]
> Именно таким образом сейчас и есть(вернее в том числе есть и скрипты с подобными запросами)