我在SQL Server中创建表时有一个小查询。
表格中有6列。每列都有一个名称。
在这些专栏中,我想进一步将其划分为两列,分别为正面和负面。
因此
将是表架构。
我理解创建列然后将名称与它们相关联将很容易,但是如何在创建表时将列分成两列并将它们命名为子列。
答案 0 :(得分:5)
如果Column1_Positive
和Column1_Negative
是两个不同的属性,那么您需要两个单独的列来存储这些属性。没有将单个列细分为两个元素。
答案 1 :(得分:3)
根据Joe Stefanelli的回答,你不能细分一栏。
感觉好像你正在尝试将每个列视为它自己的结构或类。您最好将TABLE视为结构,并将每个FIELD视为基元。
你能得到的最接近的是要么创建12列,要么恰当地命名它们(C1_Pos,C1_Neg,C2_Pos,C2_Neg等)或创建两个表。
一个表将拥有它的主键列,然后是两个值列; positive
和negative
。然后,主表中的每个条目都将引用此表。
例如......
CREATE TABLE value_pair (
id INT,
positive INT,
negative INT,
PRIMARY KEY (id)
);
CREATE TABLE master (
id INT,
value_pair_id_1 INT,
value_pair_id_2 INT,
value_pair_id_3 INT,
value_pair_id_4 INT,
value_pair_id_5 INT,
value_pair_id_6 INT,
PRIMARY KEY (id),
FOREIGN KEY (value_pair_id_1) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_2) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_3) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_4) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_5) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_6) REFERENCES value_pair (id)
);
然而,只要你想抓住其中一个值,你就不得不加入这两个表。如果你想要所有的价值,你必须加入6次......
SELECT
*
FROM
master
INNER JOIN
value_pair AS [VP1]
ON master.value_pair_id_1 = [VP1].id
INNER JOIN
value_pair AS [VP2]
ON master.value_pair_id_2 = [VP1].id
INNER JOIN
value_pair AS [VP3]
ON master.value_pair_id_3 = [VP1].id
INNER JOIN
value_pair AS [VP4]
ON master.value_pair_id_4 = [VP1].id
INNER JOIN
value_pair AS [VP5]
ON master.value_pair_id_5 = [VP1].id
INNER JOIN
value_pair AS [VP6]
ON master.value_pair_id_6 = [VP1].id
就个人而言,我只使用12列......