From ken-tanaka at genaris.co.jp Wed Jun 25 21:34:39 2008 From: ken-tanaka at genaris.co.jp (=?ISO-2022-JP?B?GyRCRURDZiEhN3IwbE86GyhC?=) Date: Thu, 26 Jun 2008 13:34:39 +0900 Subject: [Shibuya-pm] =?iso-2022-jp?b?REJJeDo6Q2xhc3MbJEIkSyREJCQkRjxBGyhC?= =?iso-2022-jp?b?GyRCTGQkNSQ7JEYkLyRAJDUkJBsoQg==?= Message-ID: <48631C5F.9030404@genaris.co.jp> Shibuya-pm ????????? ????????????????????? ??????????? DBIx::Class????????????(postgreSQL)???????????? ????????????? ???????????join??????????????????????? ??????????????SQL?DBIx::Class??????????????????? ???????????????????????????????????? ????????? ?????????SQL????????? my @col=map("me.".$_,$sch->class('Professors')->columns); my $hrC={ select=>'me.prof_ssn', join=>{'work_ins'=>{'pid'=>{'work_projs'=>'grad_ssn'}}}, having=>{'count(work_projs.grad_ssn)'=>{'>=',5}}, group_by=>['me.prof_ssn'], }; my $rsP = $sch->resultset('Professors')->search($hrQ,$hrC); #print $rsP->count,"\n"; ???????? 486512566 248965255 090873519 141582651 ????????????????ID???????? ?????SQL?????? SELECT me.prof_ssn FROM professors me LEFT JOIN work_in work_ins ON ( work_ins.prof_ssn = me.prof_ssn ) JOIN project pid ON ( pid.pid = work_ins.pid ) LEFT JOIN work_proj work_projs ON ( work_projs.pid = pid.pid ) LEFT JOIN graduates grad_ssn ON ( grad_ssn.grad_ssn = work_projs.grad_ssn ) GROUP BY me.prof_ssn HAVING ( count(work_projs.grad_ssn) >= 5 ); ?????????? prof_ssn ------------ 486512566 248965255 090873519 141582651 (4 rows) ??????????work_in?????professors?????project???? ???relation??????? work_proj?????project????? graduates???????relation??????? ?????????????????????????????"count"??? ???????????????????????????????????? ?????????????????????? ??????????????????having?????????????? ???????? having????????????????????????????????? ??????????????????????????????????? ?????postgreSQL???Perl??????????? ????????????????????????????????????? ???????????????????????????????????? ???????????? ???????????????????????????????