データベースに4つのテーブルがあります。次のストアドプロシージャはどのように記述できますか?
- 人(Perid、ファーストネーム、姓、性別)
- 研究(ルシ、resnameは、stareddate)
- person_research(ルシ、Perid、その他)
- 監督(ルシ、Supervisorid、その他)
私は、結果をDataGridViewに入れるための各リサーチおよび研究者の名前とスーパーバイザー名を返すストアドプロシージャを記述したいと思います。
データベースに4つのテーブルがあります。次のストアドプロシージャはどのように記述できますか?
私は、結果をDataGridViewに入れるための各リサーチおよび研究者の名前とスーパーバイザー名を返すストアドプロシージャを記述したいと思います。
を:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE dbo.test
AS
BEGIN
SET NOCOUNT ON;
SELECT R.resname as researchname
, (p1.firstname + p1.lastname) as researcher
, (p2.firstname + p2.lastname) as supervisor
FROM Research R
JOIN person_research PR
ON R.Resid = PR.Resid
JOIN person p1
on PR.Perid = p1.Perid
JOIN supervisors s
on R.Resid = s.Resid
JOIN person p2
on PR.Perid = p2.Perid
END
GO
あなたはので、私は、PostgreSQLを仮定しているDBMSが指定されていませんでした:SQLサーバーの
create or replace function get_researchers()
returns table(research_name, researchers, supervisors)
language sql
AS
$body$
select r.resname as research_name,
string_agg(p.firstname||' '||p.lastname, ',') as researchers,
string_agg(sp.firstname||' '||sp.lastname, ',') as supervisors
from research r
join person_research pr on pr.resid = r.resid
join person p on pr.perid = p.perid,
join supervisors s on s.resid = r.resid
join person sp on sp.perid = s.perid
group by r.resname
order by r.resname;
$body$
あなたは何を試してみましたか?どのデータベースのために?これはrent-a-coder.comの仕事のように思えます... –
あなたはどのDBMSを使用していますか? –
"私はストアドプロシージャを書きたい" - 何があなたを止めていますか? –