[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объединение 2 строк по одному полю
UnWind
Здравствуйте, чего то не могу справится с такой ситуацией.
В общем есть 2 записи в таблице типа:
Имя | Услуга | Задолжность
Андреев Андрей Андреевич | Кабельное телевидиние | 300 руб.
Александров Александр Александрович | Интернет | 300 руб.
Андреев Андрей Андреевич | Интернет | 150 руб.

Мне нужен вывод типа:
Андреев Андрей Андреевич
Интернет: 300 руб
Кабельное: 150 руб

При этом например могут быть абоненты типа:
Александров Александр Александрович
Интернет: 300 руб

Т.е. у которых телевидение например неподключенно и они тоже должны выводится корректно и должно быть вот так:
Андреев Андрей Андреевич
Интернет: 300 руб
Кабельное: 150 руб

Александров Александр Александрович
Интернет: 300 руб

При этом таких записей в базе много, и их вот так вот например по имени нужно объединять.
Как это правильно сделать ?
Заранее благодарю за ответ!

З.Ы.:> Скрипт - генератор квитанций для абонентов

_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
glock18
Я бы пошел через group by + group_concat на полях "услуга" и "долг". Групконкат придется потом разобрать, но других способов не вижу
UnWind
glock18 Спасибо, буду пробывать! smile.gif

_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
Valick
Цитата
но других способов не вижу

что само по себе настораживает
__

UnWind, тут обычный ORDER BY по имени (а для пущей важности и по услугам), а уж при выводе (или сборе массива) формировать то что хотите


_____________
Стимулятор ~yoomoney - 41001303250491
glock18
Цитата (Valick @ 26.12.2013 - 11:23)
Цитата
но других способов не вижу

что само по себе настораживает
__

UnWind, тут обычный ORDER BY по имени (а для пущей важности и по услугам), а уж при выводе (или сборе массива) формировать то что хотите

Разумно. Меня формулировка вопроса на группировку навела, а вообще да, достаточно сортировки и простого разбора результатов.
Valick
Цитата
Меня формулировка вопроса на группировку навела

я сам раз 5 задание прочитал smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
UnWind
Valick
Хм. Что то я Вас не совсем понимаю, order by выведет записи скажем с сортировкой по алфавиту или например по индексам,
Мне же нужно, что бы в одну строку объединились за должность и по интернету и по тв для всех абонентов у которых подключены 2 услуги, а у тех у которых подключено по одной, вывелось только по их услуге.
Например Вы видили квитанцию с энерго сбыта ?
Т.е. там написано - электричество - 250 например, отопление - 100 например.
Вот, у меня всё точно так же, но ньюанс в том - что электричество в таблице - одна запись, а отопление - другая.
При этом их можно объединить только по фактическому адресу, так как других ключей для объединения нет.
И после объединения 2 записи должны стать одной, а остальные, где не требуется или нет второй записи - выводится как обычно....

_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
UnWind
Т.е. грубо говоря взять первую запись, выдрать из нее все поля, взять другую запись - выдрать только последние поле и вывести например так:
<?php
echo $result['name'] . $result['inthernet'] . $result['tv'];

В результате должно быть:
Петр Иванович 3200 1400
При этом 3200 берется из одной записи скажем с id 1, а 1400 берется из записи с id 12345 например и связанны они только полем address и таблица одна и та же.
А есть абоненты у которых результат будет:
Вася Пупкин 3200
И по скольку нету второй записи по тв - то будет показываться только интернет.
Вот как то так... Как это сделать ?

_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
glock18
Вам уже два варианта предложили. Без обработки в пыхе такого точно не добиться, так что оба варианта подходят только с обработкой. Смотрите сами какой результат разбирать проще
Valick
UnWind, экономьте время и вашим и нашим, дамп структуры БД показывайте


_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Почему бы не сджойнить табличку "саму с собой"? Если данных нет, то тогда просто пусть будет пустое поле. В ПХП это легко отследить и не выводить то, что пустое.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.