![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 141 Pomógł: 17 Dołączył: 2.04.2008 Skąd: z Zabrza Ostrzeżenie: (0%) ![]() ![]() |
Mam 2 tabele w bazie danych jedna z nich to `galeria` a druga to `rankingi`
rankingi: id | total_votes | total_value | used_ids I chcę pobrać z bazy 3 najwyżej ocenione obrazki. Miało by to wyglądać mniej więcej tak:
Problem pojawia się w miejscu z *, gdyż pola id w bazie `rankingi` wyglądają tak: news1, news15, obrazek1, obrazek3 itd chciałem to zrobić jakoś tak: WHERE `id`='obrazek'+galeria.id Ma ktoś jakiś inny pomysł lub powie mi jak napisać moją wersje, aby działała? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Masz źle zaprojektowaną bazę.
1) Tabela galerie powinna zawierać kolumnę z rankingiem, który przy dodaniu/usunięciu każdej oceny jest przeliczany na nowo. Pozwoli to na wykonywanie prostych zapytań typu Oczywiście tabela rankingi nadal zostaje. 2) Tabela rankingi. ID powinno wskazywać na ID. A jeżeli ma wskazywać na ID kilku różnych elementów (news, obrazek) to powinna być dodatkowa kolumna określająca czy rekord dotyczy się newsa, obrazka czy czegos tam. Później zapytanie wygląda mniej-więcej tak item_type może być typem numeryczny (wtedy zkładasz, że 1 = obrazek, 2 = news itd.) lub ENUM. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 13:15 |