The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как приджоинить таблицы"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Базы данных, SQL)
Изначальное сообщение [ Отслеживать ]

"Как приджоинить таблицы"  +/
Сообщение от core (ok) on 01-Июн-13, 11:36 
Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас логика выборки из этих таблиц полностью на уровне пхп, но это не очень эффективно. Могу ли я делать джоин таких таблиц? И если да то как?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как приджоинить таблицы"  +1 +/
Сообщение от PavelR (ok) on 01-Июн-13, 12:17 
> Здравствуйте. Есть вот такая структура: Таблица 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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как приджоинить таблицы"  +/
Сообщение от core (ok) on 03-Июн-13, 09:21 
>> Здравствуйте. Есть вот такая структура: Таблица 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 я был по этим ссылкам, тут нет подобных примеров. Как приклеить по ключу я знаю а вот как приклеить ключ к имени таблицы я не знаю и тут об этом ничего не сказано.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как приджоинить таблицы"  +/
Сообщение от name (??) on 03-Июн-13, 12:56 
> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас

ничего не понятно
у вас что 18 разных таблиц категорий?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Как приджоинить таблицы"  +/
Сообщение от core (ok) on 03-Июн-13, 18:41 
>> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
> ничего не понятно
> у вас что 18 разных таблиц категорий?

Именно так.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "Как приджоинить таблицы"  +/
Сообщение от XAnder (ok) on 03-Июн-13, 14:24 
> Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем
> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
> логика выборки из этих таблиц полностью на уровне пхп, но это
> не очень эффективно. Могу ли я делать джоин таких таблиц? И
> если да то как?

Вы хотите сджойнить две таблицы, но название одной из них на момент составления запроса неизвестно. Это название должно быть получено в ходе выполнения запроса. Я правильно понял мысль?

Если да, то средствами SQL так сделать нельзя, и, вероятно, у вас ошибка при проектировании БД.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Как приджоинить таблицы"  +/
Сообщение от core (ok) on 03-Июн-13, 18:41 
>> Здравствуйте. Есть вот такая структура: Таблица categories в ней есть поле cat_id(возьмем
>> к примеру 18) которое соответствует другой таблице с название subcategory_18. Сейчас
>> логика выборки из этих таблиц полностью на уровне пхп, но это
>> не очень эффективно. Могу ли я делать джоин таких таблиц? И
>> если да то как?
> Вы хотите сджойнить две таблицы, но название одной из них на момент
> составления запроса неизвестно. Это название должно быть получено в ходе выполнения
> запроса. Я правильно понял мысль?
> Если да, то средствами SQL так сделать нельзя, и, вероятно, у вас
> ошибка при проектировании БД.

Так и есть, все верно поняли. Эх, жаль, я был почти на 100% уверен что нельзя но теперь на все 100% спасибо всем.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Как приджоинить таблицы"  +/
Сообщение от Mr. Mistoffelees on 05-Июн-13, 19:29 
Привет,

>> Вы хотите сджойнить две таблицы, но название одной из них на момент
>> составления запроса неизвестно. Это название должно быть получено в ходе выполнения
>> запроса.

Теория говорит, что при поддержке вложенных селектах это можно составить - что-то вроде
SELECT ... JOIN (SELECT ...))

Будет ти это быстрее PHP (и вообще умеет ли мускул такое) не ручаюсь - если очень надо, попробуйте.

Хотя коллега, говоривший об ошибочном строение базы, конечно, прав.

WWell,


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Как приджоинить таблицы"  +/
Сообщение от DeadLoco (ok) on 05-Июн-13, 21:51 
> Если да, то средствами SQL так сделать нельзя,

Да можно все, тоже мне - бином ньютона...

Делается процыдурка, принимающая на вход известные на момент исполнения названия таблиц, и выполняющая внутре себя PREPARE-EXECUTE-DEALLOCATE. Костыль монументальный, конечно, но, тем не менее, работать будет 100%. Как паллиатив при кривой архитектуре базы - приемлемо, но в следующей версии от этой байды надо будет избавляться любыми средствами.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Как приджоинить таблицы"  +/
Сообщение от name (??) on 06-Июн-13, 19:49 
> Здравствуйте. Есть вот такая структура: Таблица 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'
end

from [ваша_супер_пупер_мега_таблица]

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Как приджоинить таблицы"  +/
Сообщение от core (ok) on 12-Июн-13, 11:00 
>[оверквотинг удален]
> 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 [ваша_супер_пупер_мега_таблица]

Именно таким образом сейчас и есть)

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Как приджоинить таблицы"  +/
Сообщение от core (ok) on 12-Июн-13, 11:00 
>[оверквотинг удален]
>> ,--столбец с подзапросами
>> 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 [ваша_супер_пупер_мега_таблица]
> Именно таким образом сейчас и есть(вернее в том числе есть и скрипты с подобными запросами)

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру