blackseabreathe
@blackseabreathe
brackets

Как правильно вывести данные в таком случае и таким образом?

Здравствуйте.

У меня есть таблица, в которой следующий порядок

1 - Собака (name)
поводок, поводырь, мячик, кость - (elems)
01.01.2020 (date)

2 - Кот (name)
сметана, корм, шерсть (elems)
02.01.2020 (date)

3 - Собака (name)
подстричь, поводок, команды (elems)
03.01.2020 (date)

4 - Кот (name)
рано, лоток, спать, диван, пылесос (elems)
04.01.2020 (date)


Получаю массив таких данных и разбираю его. Это самый простой пример кода

$where = newQuery('animals');

$where->where(array(
'name' => $names, // допустим в переменой хранятся два имени (собака, кот)
'date':>=' => '0'

));
$where->sortby('date', 'DESC');

$array = getCollection($animals, $where);

foreach($animals as $animal){

$animalName = $animal->get('name');
$animalStuff = $animal->get('elems');
$date = date('d.m.Y, H:i', strtotime($animal->get('date')));
$res .= $animalName.'=>'.$animalStuff.'=>'.$date;
}

echo $res;


В итоге в выводе получаю всё. То есть:

- Собака - элементы... 01.01.2020
- Кот - элементы... 02.01.2020
- Собака - элементы... 03.01.2020 (снова собака только уже с другими элементами и другой датой)
- Кот - элементы... 04.01.2020 (снова кот только уже с другими элементами и другой датой)


Вопрос:

Каким образом можно сделать чтобы имя каждого животного выводилось только единожды и последнее из БД с сортировкой по дате?
Вот так:

- Собака - элементы из таблицы где дата 03.01.2020
- Кот - элементы из таблицы где дата 04.01.2020
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Во-первых, в вашем выводе сортировка - не по `date` DESC, а по `date` ASC.

А во-вторых, сделайте GROUP BY `name` и ORDER BY `date` DESC, и будет вам необходимый результат.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы