我有两张桌子:
第一桌:
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张表?
注意:如果有另一种组合这些表的方法,请随意共享(例如组合键等)。我对数据库很新!
由于
答案 0 :(得分:2)
您可以使用create table as
和cross 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;
答案 3 :(得分:0)
您可以根据选择
创建表格create table newtable as
select table1.column1, table2.tolumn2 from table1, table2
where table1.id=table2.id