Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Объединить записи БД без потери данных, Объядинить одинаковые записи БД без потери различных данных
Yakushin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 1
Пользователь №: 43378
На форуме: 2 месяца, 24 дня
Карма:




Здравствуйте!
Помогите пожалуйста разобраться с объединение записей.

Например, есть у нас почти одинаковые записи в таблице "tableone".

names years
Иван 20
Иван 25
Владимир 27

Задача в том, чтоб объединить первые две записи потому что у них одинаковые значения "names", объединить нужно так, чтоб не терялись значения years а встели друг за другом через запятую: 20, 25.

Получиться должно так:

names years
Иван 20,25
Владимир 27

Это сообщение отредактировал Yakushin - 15.09.2016 - 12:42
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Yakushin, соберите массив на стороне РНР, где names ключ, а years будут значения



--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 266
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 26 дней
Карма: 31




Наверное есть много способов.
Один из них -- GROUP BY + GROUP_CONCAT.
http://sqlfiddle.com/#!9/7a6de9/1


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




brevis, GROUP_CONCAT ограничен по длинне, поскольку количество иванов в бд ничем не ограничено, я бы не рискнул его использовать


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 266
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 26 дней
Карма: 31




Ну может Yakushin рисковый парень.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 299
Пользователь №: 40589
На форуме: 2 года, 5 дней
Карма: 20




Цитата (Valick @ 15.09.2016 - 12:52)
brevis, GROUP_CONCAT ограничен по длинне, поскольку количество иванов в бд ничем не ограничено, я бы не рискнул его использовать

Max Value 4294967295 для 32 битных систем.
Max Value 18446744073709551615 для 64.

SET [GLOBAL | SESSION] group_concat_max_len = val;

чет мне кажется вполне себе вариант.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 266
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 26 дней
Карма: 31




Цитата (depp @ 15.09.2016 - 12:11)
Max Value 4294967295 для 32 битных систем.
Max Value 18446744073709551615 для 64.

Это что-то очень похоже на значение инта.
Ну а вообще да, или настроить group_concat_max_len в конфиге, или перед запростом устанавливать.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




brevis, да я не против, более того если это используется в подзапросе, то без вариантов GROUP_CONCAT, но за длинной надо следить.
Если для вывода, то можно не забивать себе голову настройками и использовать что-то вроде
<?php
function
arr_implode($value){
return implode(',',$value);
}

$query = "SELECT * FROM users";
$res = mysql_query($query);
while($row = mysql_fetch_assoc($res)){
$arr[$row['names']][]= $row['years'];
}

echo '<pre>';
print_r($arr);
echo '</pre>';
//foreach($arr as $key=>$value) $arr[$key] = implode(',',$value);
$arr = array_map('arr_implode',$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса