【发布时间】:2015-03-18 18:04:21
【问题描述】:
我想使用相同的 id 检索多行。因此,有了这个表“component_property”,我想根据我的 SQL 查询(在下面检查)得到 2 条记录,id:8 和 9,但当然也没有检索到,因为我正在检查 cp.property_id = 9102 及更高版本并检查 cp.property_id = 8801 是否同时是不可能的。
ID;type_id;name;desc;property_id,value
--------------------------------------
8;3832;"amplifier1";"";8801;"3"
8;3832;"amplifier1";"";9102;"4015"
9;3832;"amplifier2";"";8801;"3"
9;3832;"amplifier2";"";9102;"4016"
这是我此刻的查询,它什么也没得到。
SELECT c.id, c.type_id, cp.property_id, cp.value
FROM components_component AS c
INNER JOIN components_componentproperty AS cp
ON c.id = cp.component_id
WHERE
(cp.property_id = 9102 AND cp.value IN ('4015', '4016'))
OR
(cp.property_id = 8801 AND cp.value = '3')
AND c.type_id = 3832
组件 ===> 组件属性
组件
id serial NOT NULL,
type_id integer NOT NULL,
name character varying(50) NOT NULL,
description character varying(255),
组件属性
id serial NOT NULL,
component_id integer NOT NULL,
property_id integer NOT NULL,
value character varying(255),
属性
id serial NOT NULL,
code character varying(10),
preferred_name character varying(50),
我的预期结果是:
id;name
-------
8;amplifier1
9;amplifier2
【问题讨论】:
-
显示你的预期输出
-
还显示从
components_component提取的结构/示例数据 - 我还看到你有c.type_id = 3832也许你的意思是cp.type_id ... -
@unique_id 嗯,我得到 4 条记录,我应该只得到 2 条记录,它们代表与属性值匹配的 2 个组件。
标签: sql postgresql postgresql-9.1 relational-division