Добрый день.
Есть две таблицы.
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. Это вообще реально записать?
Может есть методы еще проще?
Заранее спасибо.