Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Как занести несколько значений в одну ячейку (например: столбец `num` co значениями: 10;15;21;32;45... и т.д) так, что бы при запросе одного из значений (например "SELECT * FROM table WHERE num=21") он мне выдал эту строчку.
Какими средствами можно это реализовать?
Заранее спасибо за ответ!
Неактивен
WHERE num LIKE ';21;'. Только лучше нормализуйте табличку и храните каждое
значение в своей строке. Такой зверь, как у Вас, никогда не будет работать быстро.
Неактивен
paulus написал:
WHERE num LIKE ';21;'. Только лучше нормализуйте табличку и храните каждое
значение в своей строке. Такой зверь, как у Вас, никогда не будет работать быстро.
Тогда...
А как грамотно это сделать? (если это конечно реализуемо )
Неактивен
-- Создание данных
CREATE TABLE groups (group_id INT KEY, num INT NOT NULL, INDEX(num));
INSERT INTO groups VALUES (1, 10), (1, 15), (1, 21), … (2, 7), …;
-- Выборка
SELECT g2.num
FROM groups g1 JOIN groups g2 USING (group_id)
WHERE g1.num=21;
Неактивен
А если значений не так много (<64) то можно использовать тип поля SET сохранив логику приложения.
А будет ли в таком случае запросе использоватся индекс?
Отредактированно vaspet (19.01.2010 00:51:57)
Неактивен
Должен, но лучше смотреть конкретный EXPLAIN. Возможно, нужно будет
преобразовывать значения к BIGINT.
Неактивен