SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 18.06.2011 12:22:55

evgeniy123
Участник
Зарегистрирован: 12.06.2011
Сообщений: 9

Проблема выборки. Одна таблица (Картинки прилагаются)

Есть задача: Вывести людей по приоритету (Coefficient). Условия (where (1_time_incall=30 AND 1_unit_incall =1) OR (2_time_incall=30 AND 2_unit_incall =1) OR (3_time_incall=30 AND 3_unit_incall =1) OR (4_time_incall=30 AND 4_unit_incall =1) ). Или что то вроде того. Главное найти пару time_incall=30 AND unit_incall=1 и упорядочить все по amount_incall. У кого приоритета выводить по убывание или возрастанию в колонках (incall_amount). Вот картинки что было до и что нужно после . Помогите пожалуйста. Спасибо

до : http://s46.radikal.ru/i113/1106/45/9695171afdfa.gif

после: http://s60.radikal.ru/i168/1106/6a/d731e38bbdb3.gif

Неактивен

 

#2 18.06.2011 16:41:11

evgeniy123
Участник
Зарегистрирован: 12.06.2011
Сообщений: 9

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

вторую и третью строку перепутал

Неактивен

 

#3 18.06.2011 19:16:54

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

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

ORDER BY Coefficient DESC, 1_amount_incall DESC ?

Неактивен

 

#4 18.06.2011 20:09:47

evgeniy123
Участник
Зарегистрирован: 12.06.2011
Сообщений: 9

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

Надо учитывать остальные поля (2_amount_incall,3_amount_incall,4_amount_incall) при сортировки по каждому Coefficient (1,2,3 ...) .  В том то и соль вся .

SELECT       prefix_user.user_id, prefix_user.Coefficient ,prefix_user.user_login,prefix_user.1_amount_incall,prefix_user.2_amount_incall,prefix_user.3_amount_incall,prefix_user.4_amount_incall FROM ( SELECT user_id, Coefficient  , user_login,1_amount_incall,2_amount_incall,3_amount_incall,4_amount_incall FROM  prefix_user WHERE ( (1_time_incall=30 AND 1_unit_incall =1) OR (2_time_incall=30 AND 2_unit_incall =1) OR (3_time_incall=30 AND 3_unit_incall =1) OR (4_time_incall=30 AND 4_unit_incall =1) )   order by  rand()  )  prefix_user ORDER BY prefix_user.Coefficient DESC,prefix_user.1_amount_incall,prefix_user.2_amount_incall,prefix_user.3_amount_incall,prefix_user.4_amount_incall desc LIMIT 20

Пока наваял так. но тут видно что он не только по каждому Coefficient , но и по каждому amount_incall сортирует,  а нужно по всем четверым

http://s003.radikal.ru/i204/1106/71/9e1894a504de.gif

Неактивен

 

#5 18.06.2011 20:30:35

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

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

ORDER BY Coefficient, GREATEST(amount1, amount2, ...). Но лучше нормализовать данные.

Неактивен

 

#6 18.06.2011 21:52:53

evgeniy123
Участник
Зарегистрирован: 12.06.2011
Сообщений: 9

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

К сожалению все также по каждому полю в отделности пока сортирует sad

SELECT       prefix_user.user_id, prefix_user.Coefficient,prefix_user.user_login,prefix_user.1_amount_incall,prefix_user.2_amount_incall,prefix_user.3_amount_incall,prefix_user.4_amount_incall FROM ( SELECT user_id, Coefficient , user_login,1_amount_incall,2_amount_incall,3_amount_incall,4_amount_incall FROM  prefix_user WHERE ( (1_time_incall=30 AND 1_unit_incall =1) OR (2_time_incall=30 AND 2_unit_incall =1) OR (3_time_incall=30 AND 3_unit_incall =1) OR (4_time_incall=30 AND 4_unit_incall =1) )   )  prefix_user ORDER BY prefix_user.Coefficient desc ,greatest(prefix_user.1_amount_incall,prefix_user.2_amount_incall,prefix_user.3_amount_incall,prefix_user.4_amount_incall) desc LIMIT 20

http://s08.radikal.ru/i181/1106/a5/f5334eccd717.gif

это вы про бритву?

Отредактированно evgeniy123 (18.06.2011 21:53:36)

Неактивен

 

#7 18.06.2011 22:46:00

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

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

Нет, это я про нормализацию. Нужно все однотипные данные хранить в одном столбце,
тогда проблем не будет с написанием запросов.

Неактивен

 

#8 18.06.2011 23:08:56

evgeniy123
Участник
Зарегистрирован: 12.06.2011
Сообщений: 9

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

Может предложете как вы сделали бы ?

Неактивен

 

#9 18.06.2011 23:34:47

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

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

CREATE TABLE tablename (user_id INT, Coefficient INT, user_login VARCHAR(20), amount_incall INT);

Неактивен

 

#10 18.06.2011 23:45:32

evgeniy123
Участник
Зарегистрирован: 12.06.2011
Сообщений: 9

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

Так было сделано чтобы узнавать по деньгам за какой период сколько стоит человек. периодов 4 как видите. Как же я в 1 ячейку умещу 4 значения что бы потом сравнивать через  mysql ?

Неактивен

 

#11 19.06.2011 16:25:36

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

Re: Проблема выборки. Одна таблица (Картинки прилагаются)

Добавьте еще столбец period и вводите четыре строки вместо одной?

Неактивен

 

Board footer

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