Это мой запрос на создание таблицы
CREATE TABLE `result` (
`id` int(11) NOT NULL,
`l_id` varchar(25) NOT NULL,
`lname` varchar(200) NOT NULL,
`first_prize` varchar(9) DEFAULT NULL,
`consolation_prize` varchar(9) DEFAULT NULL,
`second_prize` varchar(9) DEFAULT NULL,
`third_prize` varchar(9) DEFAULT NULL,
`fourth_prize` int(11) DEFAULT NULL,
`fifth_prize` int(11) DEFAULT NULL,
`sixth_prize` int(11) DEFAULT NULL,
`seventh_prize` int(11) DEFAULT NULL,
`eigth_prize` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
и это запрос вставки значений
INSERT INTO `result` (`id`, `l_id`, `lname`, `first_prize`, `consolation_prize`, `second_prize`, `third_prize`, `fourth_prize`, `fifth_prize`, `sixth_prize`, `seventh_prize`, `eigth_prize`) VALUES
(1, '1', 'Win-Win', 'WO-878475', 'WO-878474', 'WO-878477', 'WO-878455', 8474, 8477, 8412, 8473, 8689),
(2, '2', 'KARUNNYA', NULL, NULL, NULL, NULL, 6, NULL, NULL, NULL, NULL),
(3, '3', 'SOUBHAGYA', 'WE-878656', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(4, '4', 'SREE SAKTHI', 'NB-750180', 'NE-750180', 'KO-594630', 'KF-678534', 6786, 4356, 2456, 4566, 7657);
проблема в том, что я не могу вставить несколько значений ни в один из столбцов, таких как first_prize, second_prize, third_prize и т. д. Как это сделать, пожалуйста, помогите мне, я понятия не имею, и я новичок во всем этом.
Мне кажется, тебе не следует этого делать. Столбцы предназначены для отдельных значений данной строки. Таким образом, у вас либо должно быть больше столбцов для размещения других данных (если они отличаются друг от друга), либо больше строк для размещения тех же данных для другого пользователя или чего-то еще. Вы можете сделать это с помощью разделителя или перечисления, но если вы действительно не знаете проблемы, которые это вызывает, вы, вероятно, не захотите это делать.
Вам нужно больше пояснений, ваш вопрос непонятен.
Что вы имеете в виду под фразой «Я не могу вставить несколько значений ни в один из столбцов». Столбцы содержат отдельные значения. Изучите основы и измените формулировку вопроса
Мне нужно ввести два разных значения (например, WO-878475, WE-878475) в столбец first_prize.
Есть ли какой-нибудь альтернативный способ сделать это ??
Вам поможет какой-нибудь из ответов?
ВСТАВИТЬ результат (id, l_id, lname, first_prize, consolation_prize, second_prize, third_prize, 4th_prize, Friday_prize, sixth_prize, седьмые_prize, eigth_prize) ЗНАЧЕНИЯ (1, '1', 'Win-Win', 'WO-878475, WO-878474, WO-878477', NULL, NULL, 'WO-878455', 8474, 8477, 8412, 8473, 8689);
увеличить длину колонны.
Увеличить длину столбца до чего? Это одна из многих проблем, связанных с объединением нескольких значений в одно поле. Вы не знаете, какие данные у вас есть. Это должен быть varchar (50)? Или сделать 250 «на всякий случай»?
Я предлагаю вам использовать «2», последний вариант в моем ответе.
i need to enter two different values(ie,WO-878475,WE-878475) in the column first_prize
Чтобы напрямую ответить на ваш вопрос, у вас может быть разделитель между значениями (например, | или запятая), а затем, когда вы выбираете данные поля, которые вы разделяете на основе вашего разделителя. Это в 99% случаев плохой подход к дизайну, это действительно так.
Я искренне предлагаю вам вместо этого подумать о небольшом изменении дизайна и сделать либо:
1)
Добавьте дополнительные поля, например first_prize_1
и first_prize_2
. Это, вероятно, не лучший способ, но я не знаю всех ваших настроек - это вызовет проблемы с обслуживанием, если вам понадобится другой в будущем, например first_prize_3
, но намного лучше, чем несколько значений в одном поле.
2)
Вероятно, это лучший способ - создать новую таблицу prizes
и иметь поля:
id
prize_id
prize_level (this will be 1, 2, 3 etc for first prize and so on)
competition_id
Затем просто создайте строку для каждого приза для каждого соревнования и выберите все для Competition_id, а поля позволят вам указать, какой это приз и т. д.
Таким образом, поле id
автоматически увеличивается для уникального идентификатора строки. Тогда строки будут выглядеть так: id
= 1; prize_id
= WO-878475; prize_level
= 1; competition_id
= 1; id
= 2; prize_id
= WE-878475; prize_level
= 1; competition_id
= 1;
Затем вы выбираете, где competition_id
= 1, и получаете все возможные призы для этого соревнования с pri_id и pri_levels (1-й, 2-й и т. д.). Таким образом, в соответствии с приведенным выше примером у вас может быть более одного первого приза, а поскольку строки бесконечны, вы можете иметь столько или меньше призов, сколько вам нужно для каждого соревнования, и, следовательно, не ограничены полями, которые у вас есть в таблице. (например, поле first_prize
, second_prize
и т. д.).
пожалуйста, объясните 2-й метод более подробно.
Я обновил свой ответ, чтобы добавить дополнительную информацию о том, как это будет работать. Если вам нужно что-то конкретное, дайте мне знать
MySQL - это реляционная база данных. Предлагаю вам использовать две таблицы.
Первый event
будет содержать данные о событиях (id
и name
и т. д.), Второй может быть структурирован следующим образом:
`event_id` varchar(25) NOT NULL,
`winner` varchar(9) NOT NULL,
`prize_type` int(11) NOT NULL,
Затем вы можете определить свои ключи, например:
0 = consolation prize
1 = first prize
2 = second prize
etc..
Понятия не имею, чего вы пытаетесь достичь. Вы хотите вставить несколько значений в один столбец?