I have read carefully this one: How to use ORDER BY inside UNION
Despite this, ORDER BY clause does not work on this complicated query:
SELECT *, 'tbl' as src FROM
(
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 != '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 != '999'
AND (name6 REGEXP 'Shabla|Kaliakra|Varna' )
GROUP BY name3
UNION
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 != '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 = '999'
AND (name3 REGEXP 'Shabla|Kaliakra|Varna')
GROUP BY name3
UNION
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 = '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 != '999'
AND (name6 REGEXP 'Shabla|Kaliakra|Varna')
GROUP BY name6
) tbl
UNION
SELECT *, 'tbl' as src FROM
(
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 != '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 != '999'
AND (name6 REGEXP 'N.selo|Vidin|Vratca') GROUP BY name3
UNION
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 != '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 = '999'
AND (name3 REGEXP 'N.selo|Vidin|Vratca')
GROUP BY name6
UNION
SELECT name3, prec3, name6, prec6
FROM `prec3_2015` p3
JOIN `prec6_2015` p6
ON p3.m_d_t = p6.m_d_t AND name3 = name6
WHERE prec3 = '-' AND p3.time = 12 and p3.date = 24 and p3.month = 1 AND prec6 != '999'
AND (name6 REGEXP 'N.selo|Vidin|Vratca')
GROUP BY name6
) tbl
ORDER BY FIELD (src, 'Shabla|Kaliakra|Varna|N.selo|Vidin|Vratca')
The two tables are near identical and have 7 columns - id
, month
, date
, time
, m_d_t
, name3
, prec3
or name6
, prec6
for the second table. I can't understand how to order result in a way described at the end of the query?
Thank you in advanced!