Перейти к содержимому

Реферальная программа Мегаплана


Как записать несколько значений в одну ячейку

#1 bo4kov

bo4kov
  • Пользователь
  • 26 сообщений
  • Репутация: 0
0

Отправлено 30 Май 2015 - 17:18

Здравствуйте.Не могу сделать так, чтобы вот этот вот под запрос

, (SELECT `title` FROM `shop_author` WHERE `id` IN('1','4')) AS `title_author` 

записывал в ячейку 'title_author' два значения через запятую. (Где 1 и 4 - это id авторов статей. Например 1 - Иванов Серёга, 4 - Петров Антоха). Этих id может быть неограниченное количество.

 

Вот мой весь запрос:

$query = "(SELECT *, (SELECT `title` FROM `shop_author` WHERE `id` IN('1','4')) AS `title_author` 
               FROM `shop_articles` AS `a`
                    WHERE `a`.`id` IN(
                        SELECT `art_id` FROM `shop_art_cat` WHERE `cat_id` = $category))";

Как мне сделать чтобы с помощью одного данного запроса в ячейку 'title_author' поместить имена авторов через запятую (хотя не важно как, главное чтобы два автора были в одной ячейке)???

 

У меня данный запрос помещает только одного первого автора, как исправить?


 

 

Сообщение отредактировал bo4kov: 30 Май 2015 - 17:18

  • 0

#2 miketomlin

miketomlin
  • Пользователь
  • 261 сообщений
  • Репутация: 35

Отправлено 30 Май 2015 - 20:59

GROUP_CONCAT(`title`)?

Не понял, в чем смысл выбирать авторов 1, 4.
  • 0

#3 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 31 Май 2015 - 10:34

@bo4kov, только через цикл while 

Хотя сразу в запрос не въехал, по сути у вас два массива, такое вряд ли возможно, тут уже нужно наверное  группировку использовать


  • 0

#4 Slava1988

Slava1988
  • Пользователь
  • 162 сообщений
  • Репутация: 13

Отправлено 01 Июнь 2015 - 12:22

Лучше не городить таких ужасов, сделать связующую таблицу и использовать ее в паре с LEFT JOIN


  • 0

#5 bo4kov

bo4kov
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 0

Отправлено 01 Июнь 2015 - 17:25

@miketomlinGROUP_CONCAT(`title`) не работает, выдает ошибку.

 

 

@Ixman, можно по подробнее про группировку? а то я ни когда с ней не сталкивался.


  • 0

#6 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 01 Июнь 2015 - 19:43

@bo4kov, мне сложно представить что там должно у вас получиться, поэтому тяжело сказать. А группировка работает когда есть одинаковые результаты, она их группирует по указанной ячейки, то есть убирает лишнее


  • 0

#7 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 01 Июнь 2015 - 20:31

Я обычно в таких случаях добавляю еще одну таблицу и туда пишу.

Например:

shop_articles, id_autor

Потом джойном связываешь данные таблицы статей и данные таблицы авторов


  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#8 bo4kov

bo4kov
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 0

Отправлено 02 Июнь 2015 - 14:37

Я пробовал LEFT JOIN. Создал связывающую таблицу статей и авторов, объединил таблицы авторов и статей, сделал выборку. Но если у статьи два автора, тогда мне запрос выводит эту статью два раза, а нужно один, так и должно быть или это что-то напутал?  


  • 0

#9 Serg44

Serg44
  • Пользователь
  • 25 сообщений
  • Репутация: 0

Отправлено 02 Июнь 2015 - 21:01

Как мне сделать чтобы с помощью одного данного запроса в ячейку 'title_author' поместить имена авторов через запятую (хотя не важно как, главное чтобы два автора были в одной ячейке)???

Ячейка должна иметь тип text в неё можно записать сколько угодно значений, значения надо разделять символом например ":" После выборки из базы значения придётся обработать, с помощью PHP функцией  explode. Лично я использую подобный алгоритм, это лучше чем делать связанные таблицы.


  • 0

#10 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 03 Июнь 2015 - 09:14

@Serg44, в таком случае проще сериализовать массив, записать в БД и потом ансериализовать.

тогда мне запрос выводит эту статью два раза

Что мешает сделать проверку на дубли? Или я не совсем понял конечную задачу. 


  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru