Выбрать по 2 записи с повторяющимися полями

justc

пример таблицы

domen | zag | date
site1.ru | Заг1 | 09.02.21
site1.ru | Заг2 | 09.02.21
site1.ru | Заг3 | 09.02.21
site2.ru | Заг4 | 09.02.21
site2.ru | Заг5 | 09.02.21
site2.ru | Заг6 | 08.02.21
site3.ru | Заг7 | 09.02.21

нужно выбрать по 2 записи (можно меньше) с одинаковой date и domen

должно получится
site1.ru | Заг1 | 09.02.21
site1.ru | Заг2 | 09.02.21
site2.ru | Заг4 | 09.02.21
site2.ru | Заг5 | 09.02.21
site2.ru | Заг6 | 08.02.21
site3.ru | Заг7 | 09.02.21

подскажите запрос

 

ADSoft

А где ваши наработки? каков ваш запрос?

 

justc

я пытаюсь через php сделать, кручу битый час)) думаю как-то через sql нужно ))
SELECT * FROM table ORDER BY date ASC

PHP:
  1. $i = 0;
  2. while ($zapros->next())
  3. {
  4.  
  5. $i = $i + 1;
  6. $d = $zapros->date;
  7.  
  8.  
  9. if ($d == $zapros->date && $i <= 2) {
  10.  
  11. echo ‘<p>’.date(‘d.m.Y’,$zapros->date).‘</p>’;
  12.  
  13. } else { $i = 0;}
  14.  
  15. }

но допустим если строк 4 с повторяющимися полями , то выводит 3, что логично))

ps тут из фреймворка, но думаю понятно

 

ADSoft

думаешь правильно….

Код (Text):
  1. SELECT * FROM table GROUP BY domen+date

выдаст по 1 записи с одинаковыми доменами и записями

 

justc

а если убрать domen, то как?
только по date, не больше 2ух записей с одинаковыми датами

 

justc

Чет я сам уже запутался :)

еще раз (упростим):

из таблицы нужно вывести первые 5 записей с одинаковым полем date, 6 запись, 7, 8 и тп не выводится,
далее выводятся следующие 5 записей с другой одинаковой датой и так до конца

возможно такое?
— Добавлено —
пример:

pnomer | date
1 | 08.02.2021
2 | 08.02.2021
3 | 08.02.2021
4 | 08.02.2021
5 | 08.02.2021
6 | 08.02.2021
7 | 09.02.2021
8 | 09.02.2021
9 | 09.02.2021
10 | 09.02.2021
11 | 09.02.2021
12 | 09.02.2021
13 | 10.02.2021

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

pnomer | date
1 | 08.02.2021
2 | 08.02.2021
3 | 08.02.2021
4 | 08.02.2021
5 | 08.02.2021
7 | 09.02.2021
8 | 09.02.2021
9 | 09.02.2021
10 | 09.02.2021
11 | 09.02.2021
13 | 10.02.2021

 

Drunkenmunky

GROP BY не имеет параметра LIMIT
Поэтому так как вы хотите простым запросом сделать не получится.
В случае с датами, и другими данными фиксированной длины можно произвести манипуляции комбинацией GROUP_CONCAT и SUBSTR.
Еще интересный способ предлагается здесь — https://stackoverflow.com/questions/2129693/using-limit-within-group-by-to-get-n-results-per-group

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *