组合两个表并定义第三个字段

时间:2014-07-23 10:49:53

标签: sql postgresql

我有两张桌子:

第一桌:

NAMES
-----------------------------
CD_SPECIES        SPECIES
1                 Sp1  
2                 Sp2
3                 Sp3

使用此命令创建:

CREATE TABLE NAMES (
CD_SPECIES serial PRIMARY KEY,
SPECIES varchar(64));

和第二个:

COEFFICIENTS
-------------------------------
CD_COEFFICIENT      COEFFICIENT
1                   Coeff1 
2                   Coeff2

使用

创建
CREATE TABLE COEFFICIENTS (
CD_COEFFICIENT serial PRIMARY KEY,
COEFFICIENT varchar(64) --HOLDS A COEFFICIENT NAME
);

我想用以下

创建第三个表
COMBINED TABLE
----------------------------------------
SPECIES        COEFFICIENT       CVALUE
Sp1            Coeff1            
Sp1            Coeff2
Sp2            Coeff1            
Sp2            Coeff2
Sp3            Coeff1            
Sp3            Coeff2

其中CVALUE是保存我定义的float类型数据的列。

我应该如何创建第3张表?

注意:如果有另一种组合这些表的方法,请随意共享(例如组合键等)。我对数据库很新!

由于

4 个答案:

答案 0 :(得分:2)

您可以使用create table ascross join

执行此操作
create table thirdtable as 
    select s.species, c.coefficient, cast(12345 as real) as cvalue
    from species cross join
         coefficients;

答案 1 :(得分:1)

创建第3个表,就像你为其他两个表所做的那样。

然后在第3个表中插入记录,从表1和2的连接中获取数据。

INSERT INTO TABLE3 (col1, col2) values (select tab1.SPECIES.tab2.COEFFICIENT from tab1,tab2
where tab1.CD_SPECIES  = tab2.CD_COEFFICIENT);   

答案 2 :(得分:1)

CREATE TABLE table3 AS 
 SELECT SPECIES ,COEFFICIENT, NULL::float 
   FROM table1 CROSS JOIN table2;

SQL FIDDLE

答案 3 :(得分:0)

您可以根据选择

创建表格
create table newtable as
select table1.column1, table2.tolumn2 from table1, table2 
where table1.id=table2.id
相关问题