SQLite:查询以获取公共属性

时间:2014-02-28 08:21:53

标签: sql sqlite android-sqlite

我有两张桌子 的产品: id,代码,slug等 和属性: id,product_id(FK到产品),名称,值

我想选择与产品代码相关的所有常用属性 例如:

Table: product
id -  code
1  -  C1
2  -  C1
3  -  C1

Table: attribute
id - product_id  - name  - value
1  - 1     -       W   -   10
2  - 1     -       H   -   12


3 -  2     -       W   -   10
4 -  2     -       H   -   2
5 -  2     -       T   -   12


6 -  3     -       W   -   10
...

如何获得与产品代码

对应的属性

例如:产品代码C1。产品代码C1的公共属性(名称,值)是   名称= W且值= 10 ,因为它们具有相同的名称和值

如果属性表中没有产品ID 3,它也应该返回null。

1 个答案:

答案 0 :(得分:1)

SELECT product.code,
       attribute.name,
       attribute.value
FROM product
JOIN attribute ON product.id = attribute.product_id
GROUP BY product.code,
         attribute.name,
         attribute.value
HAVING count(*) = (SELECT count(*)
                   FROM product AS p2
                   WHERE p2.code = product.code)