Групиране

Ev0luti0N

Registered
Имам в таблицата поле name, но имам няколко пъти повтарящи се имена, как мога да ги групирам и да изкарам id на последното повторено име.
 
Код:
SELECT DISTINCT `name`,`id` FROM `table` ORDER BY (`id`) DESC LIMIT 1
Единственият елемент трябва да е последното повторено име.
 
peter_ew каза:
Код:
SELECT DISTINCT `name`,`id` FROM `table` ORDER BY (`id`) DESC LIMIT 1
Единственият елемент трябва да е последното повторено име.
Аз изкарвам много резултати и вместо да се повтарят искам да излиза по 1 име от тези който се повтарят, но последното id.

Примерно ако имам
1 - Petar
2 - Ivan
3 - Petar
4 - Petar

Да ми излезе
4 - Petar
2 - Ivan
 
Пробвай тогава с
Код:
SELECT DISTINCT `name`,`id` FROM `table` ORDER BY (`id`) DESC

Edit: пробвай сега пак
Edit 2: сега се сетих, че това няма да работи. Освен да пазиш уникалните в един масив при обработка(примерно с PHP), не се сещам как може да стане.
 
[sql]SELECT DISTINCT `name`,`id` FROM `table` GROUP BY (`name`) DESC [/sql]
Нали искате да ги групирате по име защо пишете груп бай ИД ?
 
0u7 каза:
[sql]SELECT DISTINCT `name`,`id` FROM `table` GROUP BY (`name`) DESC [/sql]
Нали искате да ги групирате по име защо пишете груп бай ИД ?

А аз не мога да разбера защо използвате DISTINCT и GROUP BY? Няма смисъл. И как слагате DESC/ASC на GROUP ? Няма смисъл от групиране след като имаш DISTINCT само сложи ORDER.
[sql]SELECT DISTINCT name, id FROM `table` ORDER BY id DESC[/sql]
 
Не се получава..
Само с GROUP BY ми се получи, но не ми изкарва последното id на името.. А ми го групира и ми показва първото..
 
Кое не се получава по-точно? Грешка ли вади? Или връща същите резултати? Попринцип ако използваш DISTINCT с 1 колона, ако не е наистина с GROUP BY, но тогава пък няма нужда от DISTINCT.
 
Karcho каза:
Кое не се получава по-точно? Грешка ли вади? Или връща същите резултати? Попринцип ако използваш DISTINCT с 1 колона, ако не е наистина с GROUP BY, но тогава пък няма нужда от DISTINCT.
Ми вади ми резултатите без променя..

П.П. Забравих да спомена, че ползвам с 2 колони..
 
Ами тогава нямаш нужда от DISTINCT. Само от GROUP и ORDER.

Пробвай така
[sql]SELECT name, id FROM `table` GROUP BY `name` ORDER BY id DESC [/sql]
 
Karcho каза:
Ами тогава нямаш нужда от DISTINCT. Само от GROUP и ORDER.

Пробвай така
[sql]SELECT name, id FROM `table` GROUP BY `name` ORDER BY id DESC [/sql]
Да в момента така карам и всичко е по вода. Но нали те се групират и когато дам примерно
PHP:
echo $row['id'] . ' - ' . $row['name'];
ми изкарва първото id от групирането, а аз искам ако има вариянт да ми изкарва последното.

Примерно:
1 - Ivan
2 - Ivan2
3 - Ivan
4 - Ivan
Резултат:
4 - Ivan
2 - Ivan2

Дано си ме разбрал :roll:
 
Хммм... я тествай това:

[sql]SELECT newSearch.name, newSearch.last_id FROM (SELECT name, MAX(id) as last_id FROM `table` GROUP BY `name`) as newSearch[/sql]

само промени името на таблицата без да бараш друго и се пробвай да изведеш последното id с $row["last_id"] вместо само id, а пък ORDER-a после какавто искаш го слагай.
 
Karcho каза:
Хммм... я тествай това:

[sql]SELECT newSearch.name, newSearch.last_id FROM (SELECT name, MAX(id) as last_id FROM `table` GROUP BY `name`) as newSearch[/sql]

само промени името на таблицата без да бараш друго и се пробвай да изведеш последното id с $row["last_id"] вместо само id, а пък ORDER-a после какавто искаш го слагай.
Стана бе :shock:
Евала +1.. :P
 

Back
Горе