Operacja na wielu tabelach w php i mysql


(Jarek21 1992) #1

Witam,

Muszę wykonać skrypt, który będzie pobierał mi listę najlepiej ocenianych artykułów

Mam 2 tabele

I. arty

II. oceny

Tabela arty skłąda się z

int id

text tytul

text opis

text tresc

text dodal

Tabela oceny składa się z

int id

int id_artu

int ocena

Z tabeli oceny wyciągam średnią ocen za pomocą avg(`ocena)

Jednak problem się pojaiwa gdy chce wyciagnac wszystkie artykuły wg oceny od największej do najmniejszej z tym, żeby przy każdym artykule pojawiał się jego tytuł, opis, ocena, kto dodał oraz data

Oto mój fragment kodu który to wyciąga

Ale ten kod wyciąga mi tylko jeden artykuł, ten pierwszy dodany

Pomocy


(Fiołek) #2

To zapytanie podobne jak pierwsze tylko dodaj jeszcze “ORDER BY ocena DESC”.


(Jarek21 1992) #3

dobrze wiem,

ale dlaczego wyświetla mi się tylko jeden art??


(Adrian Bakowski) #4

Spróbuj w wewnętrznej pętli while zrobić warunek <= lub >= zamiast =


(Remek Dobrowolski) #5

Może źle Ciebie zrozumiałem, ale w tabelach masz dwa klucze podstawowe (id) - chodzi o to, że relacje między tymi tabelami są połączone właśnie tymi kluczami (zawsze wyświetla się tylko jeden wynik). Powinieneś w drugiej tabeli stworzyć inny klucz (nie podstawowy), który byłby wyznacznikiem relacji między tabelami.

Pola: ocena i dodal warto rozbić na inne tabele (mogą występować takie same oceny i tacy sami autorzy - dane nie mogą się powielać).

W zależności jak sobie z tym poradzisz (układ tabel) należy sformuować zapytanie odzwierciedlające relacje między tabelami.

Pozdrawiam.

PS Być może źle zrozumiałem Twój problem - w takim razie nie zwracaj uwagi na moją podpowiedź.