SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.11.2010 16:02:48

k_p
Участник
Зарегистрирован: 09.11.2010
Сообщений: 8

Уникальные значения для столбцов

Есть запрос

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 запросов, но не хочется.

Как можно поступить?

Неактивен

 

#2 09.11.2010 17:32:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Уникальные значения для столбцов

DISTINCT — это конструкция, работающая над запросом целиком — достаточно
дописать ее один раз в этот запрос smile

Неактивен

 

#3 09.11.2010 17:36:15

k_p
Участник
Зарегистрирован: 09.11.2010
Сообщений: 8

Re: Уникальные значения для столбцов

не, не помогает
если DISTINCT прописать в запросе, то вернутся все уникальные комбинации, насколько я понимаю

Неактивен

 

#4 09.11.2010 17:59:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Уникальные значения для столбцов

Да, разумеется. А что Вы хотите?

Неактивен

 

#5 09.11.2010 18:47:08

k_p
Участник
Зарегистрирован: 09.11.2010
Сообщений: 8

Re: Уникальные значения для столбцов

а хочу уникальные значения каждого из столбцов без комбинаций smile

Неактивен

 

#6 09.11.2010 18:50:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Уникальные значения для столбцов

Пусть у Вас два столбца — в одном два уникальных значения, а во втором — 10.
Сколько строк Вы ожидаете получить? И с какими значениями?

Неактивен

 

#7 09.11.2010 19:10:05

k_p
Участник
Зарегистрирован: 09.11.2010
Сообщений: 8

Re: Уникальные значения для столбцов

10 в идеале
в первом столбце 2 строки заполнены, остальные NULL
во втором - 10 строк

Неактивен

 

#8 09.11.2010 19:17:48

k_p
Участник
Зарегистрирован: 09.11.2010
Сообщений: 8

Re: Уникальные значения для столбцов

В противном случае при размере БД в 5000 строк и без  WHERE условий

1. без DISTINCT - 5000  строк в результирующей выборке
2. с DSITINCT  - порядка 850 строк
3. хотя distinct для t1.cost = 170 строк, для остальных - не превышает 30

Неактивен

 

#9 09.11.2010 19:31:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Уникальные значения для столбцов

А выполнить отдельный запрос для каждого столбца Вы не хотите по идеологическим
соображениям? smile

Запрос, который Вас устроит, будет страшным, и никогда так делать не нужно smile
Если Вы можете угадать самый длинный запрос, то его нужно поставить первым:

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).
В скобках — вот те страшные звери.

Неактивен

 

#10 09.11.2010 19:46:41

k_p
Участник
Зарегистрирован: 09.11.2010
Сообщений: 8

Re: Уникальные значения для столбцов

отдельный запрос для каждого столбца - самое быстрое решение
хотелось как всегда сделать красиво smile

спасибо за помощь!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson