Xpoint
   [напомнить пароль]

Как сделать реализацию такого SQL запроса в DBIx-Class?

Метки: [без меток]
2007-08-10 11:42:55 [обр] dreel(0/3)[досье]

SELECT net_name, COUNT(node_id) as dev_count
FROM [dbo].[networks] nw
LEFT JOIN nodes nd ON nw.net_id = nd.net_id
GROUP BY net_name

result:
net_name dev_count


----------
net1 7

Я так понял чтоб сделать соединение надо прописать отнощения таблиц в схеме
т.е. has_many и возможно еще что то?

спустя 1 минуту [обр] dreel(0/3)[досье]

Пытался так
[$c->model('QDB::Networks')->search({}, { +select => [ 'COUNT(*) FROM nodes WHERE net_id = me.net_id' ], +as => [ 'count' ] })]

Не вышло

спустя 13 часов [обр] Spectrum2(4/26)[досье]
В perldoc DBIx::Class::Manual::Cookbook в самом начале есть примеры. Вот очень похожий:
  my $rs = $schema->resultset('Artist')->search(
    {},
    {
      join     => [qw/ cds /],
      select   => [ 'name', { count => 'cds.cdid' } ],
      as       => [qw/ name cd_count /],
      group_by => [qw/ name /]
    }
  );

  # Equivalent SQL:
  # SELECT name, COUNT( cds.cdid ) FROM artist me
  # LEFT JOIN cd cds ON ( cds.artist = me.artistid )
  # GROUP BY name
Powered by POEM™ Engine Copyright © 2002-2005