Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Łączenie jeden-do-jeden
SDK
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Witam

Muszę wyciągnąć powiązane ze sobą dane z 3 tabeli: tematy, posty, użytkownicy. Zależy mi, aby każdy temat był zwracany tylko raz ... obecnie, zwracany jest tyle razy, ile postów w nim występuję. Testowałem różne złączenia, ale dokumentacja mówi, że JOIN dołącza jeden-do-wielu. Próbowałem również DISTINCT, ale zapytanie sie wysypywało gdy wskazywał na id tematu.

Moje zapytanie:
  1. SELECT t.id id,
  2. title,
  3. c.date date,
  4. c.user user,
  5. u.login login FROM topics t
  6. JOIN posts c ON t.id = c.typeid
  7. JOIN users u ON c.user = u.id
  8. WHERE section = '$id'


Z góry dziękuję za każdą pomoc prowadzącą do rozwiązania problemu.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SDK
post
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Niestety to rozwiązanie nie jest skuteczne, w dodatku przy LIMIT 1 wyskakuje pod 5.1.29rc i 5.0.45 komunikat:

Cytat
#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'


To zapytanie zwraca jeden, zamiast 2 wierszy ( 2 tematy są w tej sekcji ), w dodatku niezależnie od order DESC czy ASC, zwraca pierwszy post zamiast najnowszego.

posts == comments ( stąd te dziwne aliasy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
  1. SELECT t.id id,
  2. title,
  3. c.date date,
  4. user,
  5. login FROM topics t
  6. JOIN comments c ON c.id IN (SELECT typeid FROM comments WHERE typeid = t.id AND type = 'forum' ORDER BY date)
  7. JOIN users u ON u.id = c.user
  8. WHERE section = '5' ORDER BY date DESC
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 08:20