Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Problem z sortowaniem
Crozin
post 24.12.2006, 12:47:28
Post #1





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Pisze mini-forum do prostego CMS'a.
Mam tabele forumtopics:
ID | Subject | Created | PostedBy | Readed

W PostedBy jest ID usera który napisał temat, a w Readed będą ID userów którzy przeczytali temat - czyli pole Readed moze wygladac np. tak:
Cytat
1 33 4 67 68 5 4

co oznacza ze userzy z w/w ID przeczytali temat.

I teraz chciałbym przy wybieraniu listy tematów z forum odpowiednio ja posortować. Chciałbym też (o ile to w ogole możliwe zrobic to w zapytaniu, a nie w php).

Mam zapytanie:
  1. SELECT * FROM forumtopics ORDER BY Created DESC

Powyższe zapytanie działa dobrze, ale jak dodać do niego "takie cos", co by dodatkowo na poczatku ustawialo te rekordy w których, w polu Readed znajduje się ID aktualnie zalogowanego usera?

Domyślam się, że będe musiał dodać cos w stylu:
  1. ...LIKE ' 666 '...

gdzie 666 to ID aktualnie zalogowanego usera
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
wipo
post 24.12.2006, 12:51:44
Post #2





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Moim zdaniem złe podejście do tematu
Ja zrobił bym dodatkową tabele readed (id_user, Id_topic)
gdzie będą odpowiednie wpisu kto czytał
a potem
  1. SELECT * FROM forumtopics WHERE id IN (SELECT id_topic FROM readed WHERE id_user=$user) ORDER BY Created DESC


Nie zapomnij oczywiście o kluczach aby te zapytania się wykonywały szybko

Ten post edytował wipo 24.12.2006, 12:52:25


--------------------
Go to the top of the page
+Quote Post
Crozin
post 24.12.2006, 12:58:05
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


szczerze powiedziawszy to na sql'u (wogole na bazach danych) za dobrze sie nie znam... tak wiec dla jakich pol powinny byc ustawione owe klucze? tongue.gif
przy zalozeniu ze tabele maja taka strukture:
users - ID | UserName | Password | inne ale nie potrzebne
forumtopics - ID | Subject | Created | PostedBy
readedtopics - UserID | TopicID

Ten post edytował Crozin 24.12.2006, 13:10:16
Go to the top of the page
+Quote Post
wipo
post 24.12.2006, 13:01:12
Post #4





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


klucze zakładasz na komórki które łączysz
wpisz
  1. EXPLAIN SELECT * FROM forumtopics WHERE id IN (SELECT id_topic FROM readed WHERE id_user=$user) ORDER BY Created DESC

to sql podpowie Ci czy dane komórki posiadają klucze i czy są one odpowiednie


--------------------
Go to the top of the page
+Quote Post
Crozin
post 24.12.2006, 13:17:11
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. EXPLAIN SELECT * FROM forumtopics WHERE ID IN (SELECT TopicID FROM forumreaded WHERE UserID=1) ORDER BY Created DESC

zwrocilo mi:
Kod
Array
(
    [0] => Array
        (
            [id] => 1
            [select_type] => PRIMARY
            [table] => forumtopics
            [type] => ALL
            [possible_keys] =>
            [key] =>
            [key_len] =>
            [ref] =>
            [rows] => 20
            [Extra] => Using where; Using filesort
        )

    [1] => Array
        (
            [id] => 2
            [select_type] => DEPENDENT SUBQUERY
            [table] =>
            [type] =>
            [possible_keys] =>
            [key] =>
            [key_len] =>
            [ref] =>
            [rows] =>
            [Extra] => Impossible WHERE noticed after reading const tables
        )

)

niestety nie mowi mi to niczego :E

Ten post edytował Crozin 24.12.2006, 13:17:27
Go to the top of the page
+Quote Post
wipo
post 24.12.2006, 13:20:19
Post #6





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Jak byś poczytał dokumentacje to byś zrozumiał
users - ID | UserName | Password |
forumtopics - ID | Subject | Created | PostedBy
readedtopics - UserID | TopicID

klucze bym założył na UserID i users.ID
a drugi na TopicID i forumtopics.ID


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:42