как отсортировать записи: одинаковые значения вместе остальное по дате

tony2001

TeaM PHPClub
короче говоря, ему нужно вынуть MIN(date) ...GROUP BY phone ORDER BY date ASC
а потом вывести к этим номерам все остальные даты.
2 запроса.
 

fog

Рыцарь Джедай
не знаю, поэтому и спрашиваю... :/

просто group тут не поможет, он только скроет записи, которые мне нужны.
 

atlantij

Guest
fog a зачем вопрос задавать если непробовать советы?! ))

но ващето прально, ненадо пробовать.
топик будет 100страничный, потому как люди тут советуют советуют, а ты знаеш шо неполучицца, почемуто только што спешал фо ю создал таблицу с 2 полями и в ней знаеш ли при 'SELECT tel, time FROM table ORDER BY tel, time' произошло именно то, на мой взгляд, што ты и просил, все слиплось как в сладком чае, а то што пользовацца при ORDER можно те только ASC'ом... вроде в мане написанно...
 

Апельсин

Оранжевое создание
> по-моему понятно , нет ?
нет, не понятно.
Если групировать по номерам и сортировать для каждого номера по времени, то почему тогда не подойдет ORDER BY phone, date DESC?

он сказал, что по порядку ему номера не надо - тогда возникает вопрос: как надо?
 

KostyaCat

мы где-то рядом
2Апельсин
потому что по времени будут сортироваться записи, только в пределах группы с одинаковым номером.
 

atlantij

Guest
2tony2001
ну стараюсь на понятном, но видимо плохо получаецца?
 

Bocha

Guest
2 Апельсин: ему надо по времени сортировать, но если звонили с одного номера более одного раза, то эти строки должны быть рядом, независимо от от сортировки по времени

2 tony2001: очень много слов. Я написал же, что точно не знаю, т.к. с MySQL мало имел дело. Спасибо что просветил насчет Оракла :)
 

Апельсин

Оранжевое создание
все, поняла.
Тогда только как сказал Тони, только не MIN(), а судя по тому что он привел в первом постинге пример, ему MAX() нужен.
 

fog

Рыцарь Джедай
KostyaCat, видимо единственный человек который на данный момент меня правильно понял.

сейчас пример таблицы отправлю.
 

Bocha

Guest
Автор оригинала: Апельсин
все, поняла.
Тогда только как сказал Тони, только не MIN(), а судя по тому что он привел в первом постинге пример, ему MAX() нужен.
в этом случае в группе будет только одно значение, максимальное, а нужно все значения для данной группы
 

tony2001

TeaM PHPClub
Bocha:
а давай ты будешь постить только тогда, когда ты что-то знаешь по теме?

fog:
SELECT MAX(date), phone FROM table GROUP BY phone ORDER BY date;
SELECT * FROM table ORDER BY phone;
 

Bocha

Guest
2 tony2001: давай

2 KostyaCat: читаю

еще предложения и вопросы будут?
 

Апельсин

Оранжевое создание
fog, если у тебя версия 4.1, то можешь сделать все вот так и даже одним запросом:

[sql]
SELECT t2.phone, t2.time FROM (SELECT phone, MAX(time) maxdate FROM table GROUP BY phone ORDER BY time DESC) t1, table t2 WHERE t1.phone=t2.phone ORDER BY t1.maxdate DESC, t2.time DESC;
[/sql]

если ниже, то переписываешь запрос с использованием временной таблицы, т.е. в виде 2х запросов:
1. выборка во временную таблицу, соответствует внутреннему SELECT
2. выборка необходимых данных

> в этом случае в группе будет только одно значение, максимальное, а нужно все значения для данной группы
Для этого и нужен второй запрос, как сказал Тони ;)
 

KostyaCat

мы где-то рядом
CREATE tmp

INSERT INTO tmp SELECT MAX(date), phone FROM table GROUP BY phone ORDER BY date;

SELECT tmp.phone,table.date FROM tmp,table WHERE table.phone=tmp.phone ORDER BY tmp.date;

DROP tmp
 
Сверху