您似乎已经有了设计想法并正在寻找查询。我添加了 create table/insert 语句来显示我对问题的解释。这假设了许多完整性项目,例如:
使用 Postgresql 运行:
CREATE TABLE card(cardnumber int, cardtype varchar(5), field1 varchar(16), field2 varchar(16), field3 varchar(16));
INSERT INTO card VALUES(1, 'FRONT', 'a', 'b', 'c');
INSERT INTO card VALUES(1, 'BACK', 'd', 'e', 'f');
INSERT INTO card VALUES(2, 'BOTH', 'x', 'y', 'z');
SELECT c1.cardnumber
,c1.field1 AS frontField1, c1.field2 AS frontField2, c1.field3 AS frontField3
,c2.field1 AS backField1, c2.field2 AS backField2, c2.field3 AS backField3
FROM card c1
,card c2
WHERE c1.cardtype = 'FRONT'
AND c2.cardtype = 'BACK'
AND c1.cardnumber = c2.cardnumber
UNION
SELECT c.cardnumber
,c.field1 AS frontField1, c.field2 AS frontField2, c.field3 AS frontField3
,c.field1 AS backField1, c.field2 AS backField2, c.field3 AS backField3
FROM card c
WHERE c.cardtype = 'BOTH';
cardnumber | frontfield1 | frontfield2 | frontfield3 | backfield1 | backfield2 | backfield3
------------+-------------+-------------+-------------+------------+------------+------------
1 | a | b | c | d | e | f
2 | x | y | z | x | y | z