Задавайте вопросы, мы ответим
Вы не зашли.
Есть запрос
select
t1.cost,
t1.rooms,
t1.area,
t2.district_id,
t3.date
from t2
left join re_districts on t2.district_id = t4.id
left join t3 on t2.id = t3.parent_object_id
right join t1 on t3.id = t1.parent_object_id
where t1.type=0
and t2.district_id in (...)
и еще условия
запрос возвращает весь массив данных
Вопрос - как вернуть только уникальные значения требуемых полей. Можно, конечно, сделать 5 DISTINCT запросов, но не хочется.
Как можно поступить?
Неактивен
DISTINCT — это конструкция, работающая над запросом целиком — достаточно
дописать ее один раз в этот запрос
Неактивен
не, не помогает
если DISTINCT прописать в запросе, то вернутся все уникальные комбинации, насколько я понимаю
Неактивен
Да, разумеется. А что Вы хотите?
Неактивен
а хочу уникальные значения каждого из столбцов без комбинаций
Неактивен
Пусть у Вас два столбца — в одном два уникальных значения, а во втором — 10.
Сколько строк Вы ожидаете получить? И с какими значениями?
Неактивен
10 в идеале
в первом столбце 2 строки заполнены, остальные NULL
во втором - 10 строк
Неактивен
В противном случае при размере БД в 5000 строк и без WHERE условий
1. без DISTINCT - 5000 строк в результирующей выборке
2. с DSITINCT - порядка 850 строк
3. хотя distinct для t1.cost = 170 строк, для остальных - не превышает 30
Неактивен
А выполнить отдельный запрос для каждого столбца Вы не хотите по идеологическим
соображениям?
Запрос, который Вас устроит, будет страшным, и никогда так делать не нужно
Если Вы можете угадать самый длинный запрос, то его нужно поставить первым:
SELECT @a1 := 0, @a2 := 0, ...;
SELECT f1, f2, ... FROM
(SELECT @a1 := @a1 + 1 AS id, f1 FROM (SELECT f1 FROM t1 GROUP BY f1) ss1) s1
LEFT JOIN
(SELECT @a2 := @a2 + 1 AS id, f2 FROM (SELECT f2 FROM t2 GROUP BY f2) ss2) s2 ON s1.id = s2.id ...
Если угадать не можете, то нужен FULL JOIN, который напрямую не поддерживается,
но эмулируется левыми объединениями:
(a) LEFT JOIN (b) UNION (b) LEFT JOIN (a).
В скобках — вот те страшные звери.
Неактивен
отдельный запрос для каждого столбца - самое быстрое решение
хотелось как всегда сделать красиво
спасибо за помощь!
Неактивен