MySQL получает все строки, кроме первой, для всех строк, которые имеют одинаковые значения полейPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 MySQL получает все строки, кроме первой, для всех строк, которые имеют одинаковые значения полей

Сообщение 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();
}


Подробнее здесь: https://stackoverflow.com/questions/464 ... eld-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»