Здравствуйте! помогите пожалуйста. Пишу запрос где соединяются несколько таблиц. если есть несколько записей с одним полем то выбираем по последней дате. как это можно сделать?
SELECT date_post,pe_state.pe, cds_object.gos_num_ts, park.name , controller.imei , sim.n_sim , sim.tel_num , sim.pin , controller_type.name_type , model_ts.name FROM pe_state JOIN pe_controller ON pe_controller.id_pe_state = pe_state.id_pe_state JOIN park ON park.id_park = pe_state.id_park JOIN controller ON controller.id_controller=pe_controller.id_controller JOIN controller_type ON controller_type.id_type = controller.id_type JOIN cds_object ON pe_state.id_cds_object = cds_object.id_cds_object JOIN model_ts ON model_ts.id_model_ts = cds_object.id_model_ts JOIN sim_controller ON sim_controller.id_controller= pe_controller.id_controller JOIN sim ON sim.id_sim= sim_controller.id_sim WHERE date_post = (SELECT max(date_post) FROM controller );
дата - date_post, поле pe может повторяться.
Спасибо заранее за помощь!
Доброго дня, а какие критерии
Доброго дня, а какие критерии выборки еще есть?
если есть несколько записей с одним полем то выбираем по последней дате. как это можно сделать?
А какие еще критерии выборки? В вашем запросе уже выборка по крайней дате используется и, если отобрано несколько записей, то какие еще притензии к дате?
Маленькие советы: 1. Когда
Маленькие советы:
1. Когда выкладываете запрос, оформляйте его так, чтобы его было удобно читать. Я вставил переносы строк и стало намного наглядней.
2. Сокращайте длинные имена таблиц, используя алиасы. Это снова повышает удобство чтения и разбора запроса, Например:
3. Соединять такое количество таблиц иногда действительно требуется, но в большинстве случаев это очень плохая практика. Такие запросы будут крайне тяжёлыми и долгими и спасибо вам за них никто не скажет. Возможно будет правильней разбить этот большой запрос на несколько мелких или переработать структуру БД.
А по вашему вопросу, запрос у вас есть, что не работает?