grigor007: извиняюсь. В WHERE нельзя использовать столбцы, созданные в SELECT. Тогда в блоке WHERE вместо evn_date_start надо опять написать то подвыражение из SELECT. Но оно уже встречается 2 раза, поэтому лучше сделать JOIN таблице events_dates:
SELECT
events.id,
events.e_name,
events.e_s_description,
events.e_type,
events_type.et_name,
GROUP_CONCAT(events_dates.id SEPARATOR '|') AS ed_ids,
GROUP_CONCAT(events_dates.ed_date_start SEPARATOR '|') AS ed_date_start,
(SELECT GROUP_CONCAT(events_projects.ep_proj_id SEPARATOR '|') FROM events_projects WHERE events_projects.ep_event_id = events.id AND ep_is_active = '1') AS ep_proj_id,
(SELECT GROUP_CONCAT(projects.pr_name SEPARATOR '|') FROM projects WHERE projects.id IN (SELECT events_projects.ep_proj_id FROM events_projects WHERE events_projects.ep_event_id = events.id AND ep_is_active = '1')) AS pr_name,
(SELECT GROUP_CONCAT(events_research_directions.erd_res_dir_id SEPARATOR '|') FROM events_research_directions WHERE events_research_directions.erd_event_id = events.id AND erd_is_active = '1') AS erd_res_dir_id
(SELECT GROUP_CONCAT(research_direction.rd_name SEPARATOR '|' ) FROM research_direction WHERE research_direction.id IN (SELECT events_research_directions.erd_res_dir_id FROM events_research_directions WHERE events_research_directions.erd_event_id = events.id AND erd_is_active = '1')) AS rd_name
FROM events
LEFT OUTER JOIN events_dates ON events_dates.ed_event_id = events.id
LEFT OUTER JOIN events_type ON events_type.id = events.e_type
WHERE
events_dates.ed_date_start < '".date('Y-m-d')."'
AND events.e_is_active = '1'
AND events.e_type = 1
AND events_dates.ed_is_active = '1'
GROPU BY events.id
ORDER BY events_dates.ed_date_start DESC
Если добавить JOIN ещё одной таблице со связью "много", то придётся делать GROUP BY DISTINCT, то есть мы вернёмся к тому, с чего начали.
grigor007:
SELECT (SELECT events_dates.ed_date_start FROM events_dates WHERE events_dates.ed_event_id = events.id AND events_dates.ed_is_active = '1' LIMIT 1) AS evn_date_start ... WHERE evn_date_start < '".date('Y-m-d')."' ORDER BY evn_date_start DESC
grigor007: не обязательно поле. Аргументом ORDER BY может быть любое значение. А ещё можно сделать так (почти то же самое):
SELECT (SELECT events_dates.ed_date_start FROM events_dates WHERE events_dates.ed_event_id = events.id AND events_dates.ed_is_active = '1' LIMIT 1) AS evn_date_start ... ORDER BY evn_date_start DESC
grigor007: можно так:
... ORDER BY (SELECT events_dates.ed_date_start FROM events_dates WHERE events_dates.ed_event_id = events.id AND events_dates.ed_is_active = '1' LIMIT 1) DESC
var category = $('#calculationTypeProduct').val();
//...
var str = 'category=' + encodeURIComponent(category) + ...
Иначе если поле #calculationTypeProduct будет, к примеру, иметь значение '12&crack=hacking', то в str встроится лишний параметр.