Наличие основного столбца и двух вложенных столбцов в таблицах SQL Server - PullRequest
3 голосов
/ 07 сентября 2011

У меня небольшой запрос относительно создания таблиц в SQL Server.

У меня 6 столбцов в таблице.У каждого из столбцов есть имя.

В каждом из этих столбцов я хочу разделить его на два столбца с именами Положительный и Отрицательный.

Следовательно

  • Столбец1 (Положительный | Отрицательный)
  • Столбец2 (Положительный | Отрицательный) ...

будет схемой таблицы.

Я понимаю, что создание столбцов, а затем связываниеих имена были бы простыми, однако, как я могу разделить столбец на два при создании таблицы и назвать их как подколонки.

Ответы [ 2 ]

5 голосов
/ 07 сентября 2011

Если Column1_Positive и Column1_Negative - это два разных атрибута, то вам нужно два отдельных столбца для хранения этих атрибутов.Нет разделения одного столбца на два элемента.

3 голосов
/ 07 сентября 2011

Согласно ответу Джо Стефанелли, вы не можете подразделить столбец.

Такое ощущение, что вы пытаетесь рассматривать каждый столбец как структуру или класс, свой собственный. Вам лучше думать о TABLE как о структуре, а каждое поле - как о примитиве.

самое близкое к тому, что вы просите, - это создать 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 столбцов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...