2015-01-05 52 views
1

我有主表产品,它具有基于store_id字段的子表product_store_1,...,product_store_N。产品表具有规则,它们根据store_id将新行插入到其中一个子表中。它似乎工作正常,但主表目前不是空的,我想知道哪些规则是错过的。我试图在PostgreSQL Table Select中选择

SELECT store_id,count(*) FROM product GROUP BY store_id; 

但它运行所有product_store_N表,我想只为父表运行此查询。

回答

3

您需要使用ONLYFROM条款

SELECT store_id,count(*) 
FROM ONLY product 
GROUP BY store_id; 

看看这个例子:

CREATE TABLE parent (value INT); 
CREATE TABLE child_a() INHERITS (parent); 
CREATE TABLE child_n() INHERITS (parent); 

INSERT INTO parent VALUES (0),(1),(2),(3),(4); 
INSERT INTO child_a VALUES (10),(20),(30),(40),(5); 
INSERT INTO child_n VALUES (50),(60),(70),(80),(6); 

如果我查询select * from parent where value <10结果将是

Value 
    ----- 
    0 
    1 
    2 
    3 
    4 
    5 
    6 

后两个rows56分别属于child_achild_n

要获得值Parent表使用ONLYFROM条款。即:

SELECT * FROM ONLY PARENT WHERE value <10

Value 
    ----- 
    0 
    1 
    2 
    3 
    4 

sqlfiddle-demo