Автор Тема: Не тот результат какой хочу  (Прочитано 6903 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Не тот результат какой хочу
« Ответ #15 : 28 Декабря 2004, 17:45:20 »
Rodent
хотя на колонку date опираться в этом случае конечно можно, когда дело касаеться банального форума... а вообще более правильный вариант будет таким, как я уже писал:
Цитировать
SELECT MAX(pid) FROM we_posts WHERE forum_id = \'2\'
идея понятна?

лучше опираться на id, из чего следует следующее... :
SELECT DISTINCT t.*, (SELECT date FROM we_posts WHERE topic_id=t.tid AND pid=(SELECT MAX(pid) FROM we_posts WHERE topic_id=t.tid)) AS date, (SELECT author FROM we_posts WHERE topic_id=t.tid AND pid=(SELECT MAX(pid) FROM we_posts WHERE topic_id=t.tid)) AS author FROM we_posts p, we_topics t WHERE t.tid=p.topic_id AND p.forum_id=1
And no religion too...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не тот результат какой хочу
« Ответ #16 : 28 Декабря 2004, 18:13:32 »
идея понятна. без вложенных селектов шагу не можем ступить.
впрочем, это тоже очевидно. для того, чтобы сделать нормальный джойн, надо понимать, что такое бд. А это тоже не всем дано.
сочувствую.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Не тот результат какой хочу
« Ответ #17 : 28 Декабря 2004, 18:22:36 »
RomikChef
мне бы хотелось посмотреть твоё решение... коль тебе дана такая чудесная возможность использовать "нормальный джойн" поделись своими соображениями по этому поводу... я думаю всём будет интересно...! :)

P.S. На мой взгляд проще да и понятнее для человека написать решение со вложенными селектами... Возрази...
« Последнее редактирование: 28 Декабря 2004, 18:28:59 от commander »
And no religion too...

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Не тот результат какой хочу
« Ответ #18 : 28 Декабря 2004, 18:38:47 »
commander

Ну дяденька... Вы наверно космические корабли запускаете... :).

Все гораздо проще...

SELECT
MAX(t2.pid) AS older, t3.*
FROM `we_topics` AS t1, `we_posts` AS t2 , `we_posts` AS t3
WHERE t1.forum_id = \'1\' AND t1.tid = t2.topic_id
GROUP BY t1.tid, t3.pid
HAVING t3.pid = older

И все... ;)

P.S. "Вложенные селекты" - не панацея...

P.P.S. Ой опечатался в MAX(t2.pid), а то сейчас начнут копировать без разбирательств... :)
« Последнее редактирование: 28 Декабря 2004, 18:51:30 от Phoinix »

Оффлайн Rodent

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 133
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.unimix.ru
Не тот результат какой хочу
« Ответ #19 : 28 Декабря 2004, 19:02:00 »
SELECT t1 . * , max( t2.date ) AS last, MAX( t2.pid ) AS older, t3 . *, count(*)
FROM `we_topics` AS t1, `we_posts` AS t2, `we_posts` AS t3
WHERE t1.forum_id = \'2\'
AND t1.tid = t2.topic_id
GROUP BY t1.tid, t3.pid
HAVING t3.pid = older
ORDER BY last DESC

Вот все пошло, мне просто еще надо было вытаскивать дату и количество постов в данной теме

Огромное спасибо всем.
« Последнее редактирование: 28 Декабря 2004, 19:31:49 от Rodent »

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Не тот результат какой хочу
« Ответ #20 : 29 Декабря 2004, 10:26:33 »
Phoinix
Цитировать
Ну дяденька... Вы наверно космические корабли запускаете...

пока нет... просто искал решение исходя из БД PostgreSQL, MySQL было лень поднимать....
Цитировать
P.S. "Вложенные селекты" - не панацея...

никто не спорит... но вообще хотелось бы немного по подробнее услышать разъяснения относительно не рентабильности использования вложенных селектов. Тесты производительности запросов или что-нить подобное...
« Последнее редактирование: 29 Декабря 2004, 10:31:55 от commander »
And no religion too...

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Не тот результат какой хочу
« Ответ #21 : 29 Декабря 2004, 13:42:14 »
commander

Цитировать
но вообще хотелось бы немного по подробнее услышать разъяснения относительно не рентабильности использования вложенных селектов.


Если у тебя стоит PostgreSQL - это не значит что он стоит у всех, MySQL поддерживает вложенные селекты с версии 4.1.х, но дело в том, что не у всех провайдеров стоит хотя бы 4.0.х. Поэтомы вопрос рентабильности не стоит. Только лишь - либо можно использовать, либо нельзя.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не тот результат какой хочу
« Ответ #22 : 29 Декабря 2004, 13:51:10 »
если у него стоит PostgreSQL - это не значит, что в нем нельзя использовать джойн :-)
дискуссия бессмысленна, если цель - не узнать что-то новое, а оправдаться, прикрыть изначальную глупость.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Не тот результат какой хочу
« Ответ #23 : 29 Декабря 2004, 13:58:59 »
RomikChef
Цитировать

если у него стоит PostgreSQL - это не значит, что в нем нельзя использовать джойн :-)

попробуй на досуге в постгре такой запрос:
SELECT t1 . * , max( t2.date ) AS last, MAX( t2.pid ) AS older, t3 . *, count(*)
FROM `we_topics` AS t1, `we_posts` AS t2, `we_posts` AS t3
WHERE t1.forum_id = \'2\'
AND t1.tid = t2.topic_id
GROUP BY t1.tid, t3.pid
HAVING t3.pid = older
ORDER BY last DESC


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

это ты конечно на меня намекаешь?... польщен... :)  Что-то от тебя в этом посте я не видел не одного толкового предложения, только флэйм!
And no religion too...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28