|
|
|
Вопрос по сложноый выборке с сортировкой
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть две таблицы. 1-я со списком пользователей users id name secondname и т.д. 2-я с контактами users_contacts id(он же номер пользователя из 1-й таблицы) type - Тип контакта(может быть равно phone,skype,icq и т.д.) value - значение контакта. Например 1 phone 4955873351 1 phone 49558742652 1 skype ssdd1984 1 icq 56696 2 phone 68866 2 skype 5897851 и т.д. Нужна выборка всех пользователей из 1-й таблицы, с сортировкой по номеру телефона. Как это можно сделать? Вот пример выборки SELECT SQL_CALC_FOUND_ROWS users.id,users.gender,users.login,users.secondname,GROUP_CONCAT(users_contacts.type SEPARATOR '&&&') type,GROUP_CONCAT(users_contacts.value SEPARATOR '&&&') value FROM users users LEFT JOIN users_contacts ON users_contacts.id=users.id GROUP BY users.id ORDER BY (Тут надо записать условие) LIMIT 0, 2 Немного поясню. GROUP_CONCAT(users_contacts.type SEPARATOR '&&&') type - т.к. контактов может быть много на любого пользователя, их группируем. т.е. на выходе получаем массивы phone&&&phone&&&skype и т.д. и 4955873351&&&49558742652&&&ssdd1984 и т.д. Проблема возникает именно в сортировке ORDER BY, т.к. задействованы сразу 2 поля. Как я вижу выход из этой ситуации - необходимо создать какое-нибудь поле(абстрактное), которое будет опираться на 2 столба. Например: if type=phone then new_pole=value else new_pole="" и производить сортировку по new_pole. Это вообще реально записать? Может есть методы еще проще? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2014, 13:33:10 |
|
||
|
Вопрос по сложноый выборке с сортировкой
|
|||
|---|---|---|---|
|
#18+
только синтаксис для селекта IF('telephon' = type,value,'') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2014, 16:36:02 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38795579&tid=1833986]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 370ms |

| 0 / 0 |
