![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| andzol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
здравствуйте всем.
есть следующая задача table A (id) table B(id) table A_B(idA NOT NULL ,idB NOT NULL) требуется сделать запрос средствами dbic следующего типа select * from B LEFT OUTER JOIN A_B AS ab ON ab.idB=B.id AND ab.idA=? WHERE ab.idB IS NULL; , [BIND => 123] т.е. выбрать из В все id, которых нет в множестве А_В для конкретного id из множества А поковыряв dbic::relationship очевидного решения не нашел, поэтому дабы не сломать голову окончательно решил пока остановиться на следующем решении делаем M:M A<->B = А_В над множеством A_B делаю dbic::resultsource::view (is_virtual=1 естественно) с указанным выше запросом т.о. для получения объекта из множества B мне надо будет сделать примерно следующее X=resultset('virtual_view_A_B')->search({},{bind=>[123]})->first; X->id - это ИД из множества В, которых нет в множестве А_В для элемента 123 из множества А, и теперь по этому ИД можно получить объект: Bobj=resultset('B')->find(X->id); вопрос: как можно переделать вышеизложенное, чтобы на выходе получить примерно следующее: Bobj=resultset('какая-то хитрая конструкция?_A_B')->find({idA=>123}); т.е. вместо 2х запросов делать 1, но хитрый. нужно ли это делать в общем случае и оптимально ли мое решение в данном(выше) случае? спасибо Это сообщение отредактировал(а) andzol - 15.6.2011, 22:30 |
|||
|
||||
| EcSYZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 21.6.2007 Репутация: 1 Всего: 1 |
Точно сказать не могу, ибо Join`ы в DBIX::Class штука весьма продуманная, но что то вроде этого должно работать:
Это сообщение отредактировал(а) EcSYZ - 16.6.2011, 16:23 |
|||
|
||||
| andzol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
спасибо за идею. обязательно попробую и посмотрю на бенчмарки заодно....
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |