[pgsql-jp: 38819] Re: 3種類の値を持つ6つの項目の検索方法
Aoi OGAWA
aoi.ogawa @ ctc-g.co.jp
2007年 9月 25日 (火) 15:12:18 JST
おがわあおいです。
こんにちは。
PostgreSQLの性格はあまり把握はしていないのですが、こんな方法もあるよ、と
いう程度に見ていただければ助かります。
CREATE TABLE img (
imgno serial PRIMARY KEY,
datah varbit,
datal varbit,
data int[]
);
CREATE TABLE img_sub (
imgno int,
datatype int,
data int,
primary key(imgno, datatype)
);
datatypeには1〜6の数値が入ります。
data1〜data6のどれなのかを判断するものです。
data1〜data6の中身は、dataに入ります。
select * from img i
where exists
(select * from img_sub s
where s.imgno = i.imgno
and exists (select * from
(select 1 hikaku where hikaku_val=1
union
select 2 hikaku where hikaku_val=1
union
select 1 hikaku where hikaku_val=2
union
select 2 hikaku where hikaku_val=2
union
select 3 hikaku where hikaku_val=2
union
select 2 hikaku where hikaku_val=3
union
select 3 hikaku where hikaku_val=3
) t
where t.hikaku=s.data)
);
上記SQLのhikaku_varは「比較データ」のことです。
--
SELECT
'Aoi OGAWA' as name,
'ITOCHU Techno-Solutions Corporation' as company,
'aoi.ogawa @ ctc-g.co.jp' as e-mail
FROM PERSONAL_DATA
WHERE ID is ME
pgsql-jp メーリングリストの案内