![]() |
|
Модераторы: skyboy |
![]()
|
|
| Suic2 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 23.5.2012 Репутация: нет Всего: нет |
mysql. Простейший запрос: найти в таблице пользователей, тех у которых 2 параметра равны определённому параметру.
Что может быть проще? Мучаюсь 3й день. Проблема в том что воспалённый индусский разум придумал таблицу от которой голова идёт кругом. Официальное описание: имеется таблица users,
более того имеются 3 таблицы с дополнительными данными клиентов (например номер паспорта, адрес):
dopdata - объединение dopfields и dopvalues Немного поясню про dopvalues. revision вычисляется так: в таблицу вставляется пустая запись, берётся id этой записи и далее записываются все дополнительные данные подряд, при этом всем им назначается revision равное этому числу. Повторю задачу - найти пользователя у которого в данный момент(последняя(самая большая) ревизия) 2 параметра сохранённые в этих злополучных дополнительных полях равны определённому значению PS: посылаю лучи ненависти автору этого безумия Это сообщение отредактировал(а) Suic2 - 11.10.2012, 15:18 |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Tы имеешь, если я верно понимаю, иерархию (не по структуре таблиц!!! а по их наполнению)
user (1:N) revision (1:N) dop_parameter, dop_value После разворачивания всего этого дерьма в плоскую таблицу (соотв. количество правильно накрученных join-ов) тебе надо просто отобрать записи, у которых пары (dop_parameter, dop_value) равны каким-то заданным там у тебя значениям, группировать их по юзеру и ревизии, отобрать (having) те, у которых count(distinct dop_parameter)=2, отсортирить по ревизии desc и взять limit 1 записей... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Suic2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 23.5.2012 Репутация: нет Всего: нет |
спасибо за ответ, завтра со свежей головой взгляну на ваш совет |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
К сожалению наши соотечественники тоже не брезгливы к таким структурам. Но вобще две задачи набившая оскомину уж. Срез последних + отбор по UDA я прально понимаю, что parent_id это ссылка на user? Озвучте чтоли платформу чтоли. На разных платформах решается по разному. Если попытаться решить универсально, думаю, как-то так:
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Suic2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 23.5.2012 Репутация: нет Всего: нет |
Да, parent_id это id из users.
платформа mysql спасибо за запрос, то, что надо:) Это сообщение отредактировал(а) Suic2 - 12.10.2012, 10:04 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Для MySQL для среза последних наверное лучше будет как то прикруть limit вместо not exists Но если то что надо, фиг с ним, пусть будет так -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Suic2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 23.5.2012 Репутация: нет Всего: нет |
я в жизни не видел такой конструкции как not exists:) пойду гуглить что это такое, но mysql не заругался же на неё
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |