У меня есть таблица с несколькими строками, имеющими общее значение поля «owner_id», и я хотел бы получить для каждой из них все совпадающие строки, кроме первой. Таким образом, запрос должен возвращать строки с идентификатором 2,3,5,6 в приведенном ниже примере таблицы.
-----------------------
| ID | VALUE | USER_ID |
-----------------------
| 1 | 11111 | 1 |
------------------------
| 2 | 22222 | 1 |
------------------------
| 3 | 33333 | 1 |
------------------------
| 4 | 11111 | 2 |
------------------------
| 5 | 22222 | 2 |
------------------------
| 6 | 33333 | 2 |
------------------------
Вот код, который у меня был до того, как мне было предложено решение:
public function get_follow_ups()
{
$this->db->select('a.id, a.created_at, a.user_id, month(b.created_at) AS user_month');
$this->db->from('entries a, users b');
$this->db->order_by('a.created_at');
$this->db->where('a.user_id = b.id');
$this->db->where('day(a.created_at) != day(b.created_at)');
$this->db->where('a.owner_id', $this->_owner_id);
return $this->db->get();
}
Иногда пользователь не вносил запись в тот же день, когда зарегистрировался, в результате чего первая запись включалась в запрос при использовании этой функции.
Имея идею создать подзапрос, я изменил функцию следующим образом:
public function get_follow_ups()
{
$this->db->select('MIN(created_at)')->from('entries')->group_by('user_id');
$subQuery = $this->db->get_compiled_select();
$this->db->select('a.id, a.created_at, a.user_id, month(b.created_at) AS user_month');
$this->db->from('entries a, users b');
$this->db->order_by('a.created_at');
$this->db->where('a.user_id = b.id');
$this->db->where("a.created_at NOT IN ($subQuery)", NULL, FALSE);
$this->db->where('a.owner_id', $this->_owner_id);
return $this->db->get();
}
Подробнее здесь: https://stackoverflow.com/questions/464 ... eld-values
MySQL получает все строки, кроме первой, для всех строк, которые имеют одинаковые значения полей ⇐ Php
Кемеровские программисты php общаются здесь
1772587420
Anonymous
У меня есть таблица с несколькими строками, имеющими общее значение поля «owner_id», и я хотел бы получить для каждой из них все совпадающие строки, кроме первой. Таким образом, запрос должен возвращать строки с идентификатором 2,3,5,6 в приведенном ниже примере таблицы.
-----------------------
| ID | VALUE | USER_ID |
-----------------------
| 1 | 11111 | 1 |
------------------------
| 2 | 22222 | 1 |
------------------------
| 3 | 33333 | 1 |
------------------------
| 4 | 11111 | 2 |
------------------------
| 5 | 22222 | 2 |
------------------------
| 6 | 33333 | 2 |
------------------------
Вот код, который у меня был до того, как мне было предложено решение:
public function get_follow_ups()
{
$this->db->select('a.id, a.created_at, a.user_id, month(b.created_at) AS user_month');
$this->db->from('entries a, users b');
$this->db->order_by('a.created_at');
$this->db->where('a.user_id = b.id');
$this->db->where('day(a.created_at) != day(b.created_at)');
$this->db->where('a.owner_id', $this->_owner_id);
return $this->db->get();
}
Иногда пользователь не вносил запись в тот же день, когда зарегистрировался, в результате чего первая запись включалась в запрос при использовании этой функции.
Имея идею создать подзапрос, я изменил функцию следующим образом:
public function get_follow_ups()
{
$this->db->select('MIN(created_at)')->from('entries')->group_by('user_id');
$subQuery = $this->db->get_compiled_select();
$this->db->select('a.id, a.created_at, a.user_id, month(b.created_at) AS user_month');
$this->db->from('entries a, users b');
$this->db->order_by('a.created_at');
$this->db->where('a.user_id = b.id');
$this->db->where("a.created_at NOT IN ($subQuery)", NULL, FALSE);
$this->db->where('a.owner_id', $this->_owner_id);
return $this->db->get();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/46477719/mysql-get-all-rows-except-first-for-all-rows-that-share-the-same-field-values[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия