Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2018, 13:20   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Запросом не решить проблемы отображения. Не надо ни чего группировать. Выборка с повторами и с сортировкой по id_book. При отображении следить за изменением id_book и поступать соответственно
Полностью согласен!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2018, 14:01   #12
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

...а я не согласен Как вы потом эту информацию будете получать? Минимум - или один запрос ВСЕХ городов и потом на этой основе вывод, либо что хуже - на каждую запись по запросу - тоже не гуд

А вообще - обсуждаем, советуем... а автор даже нам запроса самого ни разу не показал )))))

Покажите как сейчас запрос ваш выглядит - может и поможем )))
ADSoft вне форума Ответить с цитированием
Старый 14.02.2018, 15:34   #13
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
Минимум - или один запрос ВСЕХ городов и потом на этой основе вывод, либо что хуже - на каждую запись по запросу - тоже не гуд
LEFT JOIN-ом сразу в том же запросе получать и адрес/город магазина, по id_sigla.
Результаты запроса можно сразу же сгруппировать по id_book – просто чтоб не париться потом при выводе с мониторингом текущего id_book.
Примерно так:
PHP код:
/*
 * Группировка элементов массива по указанному полю $group_field
 * 
 * @param array исходный массив для группировки
 * @param string название поля, по которому происходит группировка
 * @param string если $result_field указан = в группу попадают только значения этого поля
 */
function groupArrayByField($arr$group_field$result_field ''){
    
$result = array();
    foreach(
$arr as $item){
        if(
is_object($item) && isset($item->$group_field)){
            if(!empty(
$result_field))
                
$result[$item->$group_field][] = $item->$result_field;// только поле
            
else
                
$result[$item->$group_field][] = $item;// вся сторока
        
}
        elseif(
is_array($item) && isset($item[$group_field])){
            if(!empty(
$result_field))
                
$result[$item[$group_field]][] = $item[$result_field];// только поле
            
else
                
$result[$item[$group_field]][] = $item;// вся строка
        
}
    }
    return (!empty(
$result)) ? $result $arr;

Andkorol вне форума Ответить с цитированием
Старый 14.02.2018, 20:18   #14
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Цитата:
LEFT JOIN-ом сразу в том же запросе получать и адрес/город магазина, по id_sigla.
тогда что мешает GROUP_CONCAT из заджойненых городов сделать?
ADSoft вне форума Ответить с цитированием
Старый 14.02.2018, 20:47   #15
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
тогда что мешает GROUP_CONCAT из заджойненых городов сделать?
Ну, не хватало ещё в SQL-запросах сразу и отображение данных форматировать
Andkorol вне форума Ответить с цитированием
Старый 15.02.2018, 08:13   #16
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Цитата:
Ну, не хватало ещё в SQL-запросах сразу и отображение данных форматировать
а почему бы и нет? что в этом плохого?
ADSoft вне форума Ответить с цитированием
Старый 15.02.2018, 11:38   #17
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
а почему бы и нет? что в этом плохого?
Я сторонник того, что получение данных – это одна операция, а их отображение – это совсем другая операция.
Поэтому считаю, что полученные из БД данные должны быть максимально «чистыми» и готовыми к универсальному использованию – будь то отображение с произвольным форматированием, или передача их в JSON-формате, или к любому другому варианту использования.
Сегодня эти адреса хотят отобразить в виде простой строки, а завтра там могут понадобиться и телефоны магазинов, и их координаты для карты, или просто захотят сделать адреса магазинов в виде ссылок, или обернуть в какие-либо другие HTML-теги, или добавить к ним какую-то дополнительную информацию из другой таблицы, или ...
А у нас тут вместо данных – строка GROUP_CONCAT
В общем, я за чистоту, как самого кода, так и данных – к чему и других, по возможности, стараюсь приучить
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сгруппировать все ненулевые значения в начале массива Sergey_Belov Помощь студентам 2 04.04.2012 12:37
Вычисление среднего значения из нескольких полей одной записи yellowviolet Microsoft Office Access 4 16.11.2011 22:55
Выборка повторов illyuziy SQL, базы данных 18 16.11.2011 21:52
POSTGRE: выборка данных соотв. значению из той же таблицы Blondy SQL, базы данных 10 30.10.2011 14:57
Как запустить несколько копий одной и той же программы? murcot Помощь студентам 4 20.02.2009 11:28