Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 14.02.2018, 14:20   #11
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,050
Репутация: 5228
По умолчанию

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

icq: 303-206-418
skype: ad-soft.info
По умолчанию

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

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

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

Цитата:
Сообщение от 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, 21:18   #14
ADSoft
Профессионал
 
Регистрация: 25.02.2007
Адрес: Татарстан
Сообщений: 3,222
Репутация: 896

icq: 303-206-418
skype: ad-soft.info
По умолчанию

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

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

icq: 303-206-418
skype: ad-soft.info
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сгруппировать все ненулевые значения в начале массива 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 12:28


13:34.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru