Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка ORDER BY или GROUP BY не то удаляет... 
V
    Опции темы
DRUG_ADDICT
Дата 18.4.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



Привет всем начит...

вот есть запрос у меня:
Код

SELECT * FROM comments c, torrents t WHERE c.torrent = t.fid AND t.moderated != 0 GROUP BY c.torrent ORDER BY c.id DESC LIMIT 0 , 10

вот только не дафно заметил что запрос работает мягко говоря не корректно smile суть вообще не в нем а в GROUP BY или в ORDER BY и DESC точно сам ещё не определился... ну вообщем дело в технике SQL и его методике сортировки и/или группировки данных  т.к. почему то этот GROUP BY группирует нужное мне поле не по условию (ORDER BY ... DESC) выводу/сортировки... а как, как то странно... 

ну допустим есть запрос:
Код

SELECT * FROM tablename GROUP BY data ORDER BY id DESC 

и есть поля в этой tablename:

Код

CREATE TABLE IF NOT EXISTS `tablename` (
  `ID` int(11) NOT NULL,
  `data` int(10) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `tablename` (`ID`, `data`) VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 3),
(6, 4),
(7, 2);

это ^_^ чтобы вам проверить///

а вот так понятнее я думаю:
Код

ID      data
1         1
2         1
3         1
4         2
5         3
6         4
7         2

как видно в поле data поля дублируются...
если применить здесь GROUP BY к полю data, причем в запросе иметь ORDER BY сортировку DESC по полю ID иииии даже если SELECT *, MAX(ID) и даже если задать условие для GROUP BY HAVING ID < 100000000000000000000000000 smile ..............

с этой группировкой GROUP BY результат будет следующий: 

Код

ID      data
6         4
5         3
4         2
1         1

вроде бы все правильно но мне кажется что тут... что то все таки не так  smile , сейчас объясню, сортировка ORDER BY id DESC по сущности свой должен отсортировывать все по убыванию, то есть по полю id: 7,6,5,4,3,2,1 там где встречаются дубликаты эти поля должны опускатся или как ещё говорят удалятся из результата, мы получаем: 6,5,4,1 но постойте а правильная ли сортировка? вед сортировка по убыванию а значит оно должно начинаться (!внимание!) с максимального значения поля ID... или нет? - вот в чем вопрос... вообщем говоря по моему должно быть так: 7,6,5,3 или я ошибаюсь???

короче говоря именно по этому у меня тут не выходит написать одну штуку для сайта... помогите с этим разобраться пожалуйста... c этим GROUP BY или с ORDER BY и DESC не знаю... просто надо сделать так (7,6,5,3) ?чтобы GROUP BY не удалял самые первые найденые им дубликаты а самые последние? ээээ о чем это я??? smile вообщем пожалуйста ПОМОГИТЕ!!! 


PS. я не хачу эту проблему решать с помощью циклов или что то типа того, таКОго гроМОского, охото все это дело решить одним SQL запросом... спасибо большое за ранее... 
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
ТоляМБА
Дата 18.4.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 10
Всего: 252



Многобукафф!

DRUG_ADDICT, в двух словах: что ты хочешь получить? какой результат?
PM   Вверх
DRUG_ADDICT
Дата 18.4.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



я не знаю как это объяснить в двух словах, может быть я дурак? smile ну просто надо чтобы блиин как это сказать то ну чтоб  smile да не магу я!!! ну чтобы отображались последние комментарии в проверены торрент раздачах!!! но отображаются там самые первые! потому как GROUP BY или в ORDER BY и DESC как то не правильно (или правильно) отображает результат! надо чтобы GROUP BY удалял последние дубликаты а не первые! или как то так... я не знаю... почитайте первый пост пожалуйста, вы все поймете, может быть для вас это станет даже открытием smile уууууу....

Это сообщение отредактировал(а) DRUG_ADDICT - 18.4.2009, 14:40
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
ТоляМБА
Дата 18.4.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 10
Всего: 252



Цитата(DRUG_ADDICT @  18.4.2009,  16:39 Найти цитируемый пост)
чтобы отображались последние комментарии в проверены торрент раздачах

Код
SELECT max( `id` ) AS `id1` , `data` 
FROM `tablename` 
GROUP BY `data` 
ORDER BY `id1` DESC


id1    data
7    2
6    4
5    3
3    1


1. По теме поста: к php не имеет отношения никакого, надо было постить в MySQL.
2. По GROUP и ORDER: не поленись почитать мануал.
3. По стилю изложения: во Флейме у нас есть Песочница, добро пожаловать туда.
PM   Вверх
DRUG_ADDICT
Дата 18.4.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



ТоляМБА да фу ты блин ваще...... ПАСИБО! smile  smile  smile 
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
DRUG_ADDICT
Дата 20.4.2009, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



Цитата(ТоляМБА @ 18.4.2009,  14:51)
Цитата(DRUG_ADDICT @  18.4.2009,  16:39 Найти цитируемый пост)
чтобы отображались последние комментарии в проверены торрент раздачах

Код
SELECT max( `id` ) AS `id1` , `data` 
FROM `tablename` 
GROUP BY `data` 
ORDER BY `id1` DESC


id1    data
7    2
6    4
5    3
3    1


1. По теме поста: к php не имеет отношения никакого, надо было постить в MySQL.
2. По GROUP и ORDER: не поленись почитать мануал.
3. По стилю изложения: во Флейме у нас есть Песочница, добро пожаловать туда.

 smile а как сделать вот это вот твоё для этого: 
Код

SELECT * FROM comments c, torrents t WHERE c.torrent = t.fid AND t.moderated != 0 GROUP BY c.torrent ORDER BY c.id DESC LIMIT 0 , 10 
 я делаль че то smile не работает!

Это сообщение отредактировал(а) DRUG_ADDICT - 20.4.2009, 02:46
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
ТоляМБА
Дата 20.4.2009, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 10
Всего: 252



DRUG_ADDICT, ещё бы у тебя заработало. Выводишь все поля из обеих таблиц:
Цитата(DRUG_ADDICT @  20.4.2009,  04:46 Найти цитируемый пост)
SELECT *

а группировку делаешь по одному:
Цитата(DRUG_ADDICT @  20.4.2009,  04:46 Найти цитируемый пост)
GROUP BY c.torrent


Описывай обе таблы с небольшим заполнением как в 1-м посте и говори что хочешь получить в результате.

Цитата(ТоляМБА @  18.4.2009,  16:51 Найти цитируемый пост)
2. По GROUP и ORDER: не поленись почитать мануал.


PM   Вверх
DimW
Дата 20.4.2009, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



DRUG_ADDICT, ты разницу улавливаешь?

Цитата(DRUG_ADDICT @  20.4.2009,  02:46 Найти цитируемый пост)
SELECT * FROM

и
Цитата(ТоляМБА @  18.4.2009,  14:51 Найти цитируемый пост)
SELECT max( `id` ) AS `id1` , `data` FROM



Это сообщение отредактировал(а) DimW - 20.4.2009, 08:32
PM MAIL ICQ   Вверх
DRUG_ADDICT
Дата 20.4.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



DimW, а ты читать умеешь? я написал как это все сделать вот на том запросе и привел его как пример... на самом деле у меня так:
Код

SELECT max(c.id) AS id1, c.torrent, c.user, c.request, c.text 
FROM comments c, torrents t 
WHERE c.torrent = t.fid AND t.moderated != 0 
GROUP BY c.torrent ORDER BY id1 DESC LIMIT 0 , 10


ТоляМБА, ну там много че есть... в общем групировать надо по двум таблицам я так понял, ага... ладно пойду попробуй... скоро вернусь ждите!
Код

2. По GROUP и ORDER: не поленись почитать мануал.

 smile

Добавлено через 12 минут и 18 секунд
подождите... но как я буду группировать по второй табличке... если там дубликатов нет и быть не может и группировать там не чего... 

вот оно: c.torrent = t.fid; в поле t.fid таблица `torrents` дубликатов нет и это поле инексовое как бы так, а поле c.torrent в таблице `comments` имеет множество дубликатов, которое надо группировать то есть/или удалить (не знаю как точно это звучит) и вывести это все отсортировав ORDER DESC конечно по ключевому (index (или как оно называется...)) полю c.id которое в таблице comments... 

Это сообщение отредактировал(а) DRUG_ADDICT - 20.4.2009, 08:59
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
DimW
Дата 20.4.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(DRUG_ADDICT @  20.4.2009,  08:56 Найти цитируемый пост)
DimW, а ты читать умеешь?

умею, а вот ты грамотно излогать свои мысли нет, такое чувство как будто на удаве быдлокодерами воспитан...
Цитата(DRUG_ADDICT @  20.4.2009,  08:56 Найти цитируемый пост)
подождите... но как я буду группировать по второй табличке... если там дубликатов нет и быть не может

значит сначала группируй, а потом связывай.
Код

select *
  from (select x
          from table1
         group by x) t1
      ,table2 t2
 where t2.t1_id = t1.id

PM MAIL ICQ   Вверх
DRUG_ADDICT
  Дата 3.7.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



DimW спасибо все работает! smile

Добавлено через 39 секунд
поставил бы респект но не достаточно сообщений
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1052 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.