Zapytanie zagnieżdżone - sortowanie wyników

0

Mam dwie tabele w relacji jeden do wielu: threads i posts. Każdy wątek w threads ma swój numer ThreadID. Każdy post w posts ma swój numer PostID, przypisany postowi numer ThreadID (kilka postów może mieć ten sam TID) oraz czas uniksowy Time.

Chcę pobrać listę wszystkich elementów z threads posortowanych wg. największego Time dla postów przypisanych do danego wątku. Inaczej:

Mój pomysł na sortowanie według Time:

SELECT * FROM threads ORDER BY (SELECT Time FROM posts WHERE ThreadID='id' ORDER BY Time DESC LIMIT 1) DESC

I dwa pytania:

  1. W jaki sposób umieścić poprawne ID wątku w ThreadID='id'? Czy jest to w ogóle możliwe?
  2. Czy taki sposób na posortowanie w ogóle zadziała? Jeśli nie, czy istnieje inna opcja? Myślałem o tym, by najpierw dla każdego wątku ustalić wartość NewestPostTime i dopiero na tej podstawie sortować. Czy jest to lepsze wyjście?
1

Nie wiem czy dobrze zrozumiałem o co Tobie chodzi, ale :
SELECT * FROM posts INNER JOIN threads ON posts.ThreadID = threads.ThreadID ORDER BY Time DESC

1

a może tak :

SELECT * FROM threads ORDER BY (SELECT Time FROM posts WHERE posts.ThreadID=therads.id  ORDER BY Time DESC LIMIT 1)DESC

piszę z pamięci i nie wiem czy składniowo jest to poprawne
kiedyś miałem podobny problem, i wydaje mi się że musiałem użyć zagnieżdżonego selecta, muszę poszukać w moich archiwach

0

może coś w ten deseń :...

select * from (select table1.field1, table2.field2,  ..... , (select first 1 from table2 where table2.thread_id=table1.id order by time desc) as time ) order by time 

1 użytkowników online, w tym zalogowanych: 0, gości: 1