[pgsql-jp: 37223] Re: フィールドの値で選択する他のフィールドを変えられますか?

川上 雅志 masashi.kawakami @ jcom.home.ne.jp
2006年 6月 15日 (木) 23:53:49 JST


ご苦労様です、川上です。

> |生徒ID|現在の学年|1年次の組|1年次の番号|2年次の組|2年次の番 
> 号|3年次の組|3年次の番号| 姓 |‥‥
> 
> 生徒IDから現在の学年,組,番号を SQL で選択する方法というのは
> あるのでしょうか。

このテーブル構造のままで、ということであれば
SELECT 生徒ID, 現在の学年, 
 CASE 現在の学年
  WHEN 1 THEN 1年次の組
  WHEN 2 THEN 2年次の組
  ELSE 3年次の組
 END AS 組,
 CASE 現在の学年
  WHEN 1 THEN 1年次の番号
  WHEN 2 THEN 2年次の番号
  ELSE 3年次の番号
 END AS 番号

というSQLで取得することが出来ます。

http://www.postgresql.jp/document/pg814doc/html/functions-conditional.html#AEN12600


しかしながら、テーブルの作り方に問題があると思います。

|生徒ID|現在の学年| というテーブル(A)と

|生徒ID|年次|組|番号| というテーブル(B)を作りましょう。

SELECT A.生徒ID, A.現在の学年, B.組, B.番号
 FROM  A, B
 WHERE A.生徒ID = B.生徒ID
 AND   A.現在の学年 = B.年次

というSQLでお望みのデータを取得することが出来ます。



--
dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb
川上 雅志 masashi.kawakami @ jcom.home.ne.jp
qpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqp




pgsql-jp メーリングリストの案内