SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.01.2011 17:46:19

Madnezz
Участник
Зарегистрирован: 15.01.2011
Сообщений: 3

Несколько значений в ячейке

Есть 2 таблицы
consta:

CREATE TABLE l2consta.consta(
  id INT(10) NOT NULL AUTO_INCREMENT,
  name CHAR(50) DEFAULT NULL,
  pers VARCHAR(9) DEFAULT NULL,
  need VARCHAR(9) DEFAULT NULL,
  PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 2
AVG_ROW_LENGTH = 16384
CHARACTER SET utf8
COLLATE utf8_general_ci;


pers:
CREATE TABLE l2consta.pers(
  id INT(10) NOT NULL AUTO_INCREMENT,
  name CHAR(10) DEFAULT NULL,
  consta INT(10) DEFAULT NULL,
  PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 4
AVG_ROW_LENGTH = 5461
CHARACTER SET utf8
COLLATE utf8_general_ci;


Нужно показать id персонажей из таблицы pers которые есть в consta.pers. Персонажи в consta.pers перечисляются через запятую, всего может быть 9. Надеюсь понятно объяснил.

Неактивен

 

#2 15.01.2011 20:08:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Несколько значений в ячейке

id из таблицы pers нужно проверять на вхождение в consta.pers во всех строках или в определенных?

Неактивен

 

#3 15.01.2011 20:28:27

Madnezz
Участник
Зарегистрирован: 15.01.2011
Сообщений: 3

Re: Несколько значений в ячейке

Ну только в тех, где id их совпадают. Тоесть в consta.pers значения "1,5,8,12,18,25,186" и нужно выбрать из таблицы pers строки с этими id

Отредактированно Madnezz (15.01.2011 20:30:02)

Неактивен

 

#4 15.01.2011 22:02:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Несколько значений в ячейке

Одним запросом никак.

select group_concat(pers) from consta;

select id from pers where id in(здесь указываете полученный в прошлом запросе результат);

Неактивен

 

#5 15.01.2011 22:43:25

Madnezz
Участник
Зарегистрирован: 15.01.2011
Сообщений: 3

Re: Несколько значений в ячейке

Спс. А как это организовать 1 запросом? Была идея сделать еще 1 таблицу соответствий с 2 колонками consta.id и pers.id, но какой способ будет быстрее работать?

Неактивен

 

#6 15.01.2011 22:49:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Несколько значений в ячейке

Хранить через запятую как сейчас - это извращение.
Сделайте доп таблицу и будет вам счастье.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson