Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Sortowanie danych po wynikach z innej tabeli
Forum PHP.pl > Forum > Przedszkole
andrzej_
Witam, oczywiście użyłem wyszukiwarki, jednak ciężko się dostosować z własną strukturą bazy do cudzych odpowiedzi.

Co próbuje zrobić, to sortowanie wyników po danych z innej tabeli, struktura:

tabela1 [zdjecie] : id | nazwa | galeria | ocena
tabela2 [galeria] : id | nazwa

Każde zdjęcie jest przypisane do galerii przez jej numer ID, ja chciałbym zrobić sortowanie wszystkich galerii poprzez zsumowanie ocen zdjęć które są przypisane do niej. Domyślam się, że można w prosty sposób zrobić przez zapytanie SQL, jednak nie wiem jak je skonstruować, ze swoich pomysłów mogę to zrobić ewentualnie poprzez wyciągniecie wszystkiego do tablic, a później zsumowanie i posortowanie, lub dodaniu pola 'pełna ocena' w tabela2 [galeria] i przy ocenie działać na obu, ale jeżeli można zaoszczędzić na miejscu, to czemu nie. Proszę o podpowiedź albo link do funkcji/tutoriala, który może mi pomóc.

Dziękuje z góry i pozdrawiam!
Andrzej
nospor
group by oraz order by sum(...)
andrzej_
Cytat(nospor @ 18.01.2012, 16:51:59 ) *
group by oraz order by sum(...)


Dzięki za szybką odpowiedź, przeczytałem instrukcje funkcji, i wyszło mi coś takiego:
  1. SELECT SUM(ocena) AS asd FROM zdjecie, galeria WHERE zdjecie.galeria = galeria.id GROUP BY asd


Jednak, jedyna rzecz, którą zapytanie robi, to sumowanie wszystkich ocen jako "asd". Domyślam się, że kolejność w zapytaniu pokręciłem, czy coś więcej?
nospor
group by masz robic po galeria.id
andrzej_
Super, działa. Faktycznie, pomyliłem się i chciałem to sortować przez asd, mała zmianka i wszystko śmiga, dziękuje serdecznie nospor!

pytanie bonus: przy pobieraniu przez sql danych z dwóch różnych tabel, w których są takie same nazwy pól [np. nazwa w tym wypadku], czy jest opcja aby zrobić np. SELECT * FROM galeria, zdjecia.ocena, lub coś w tym stylu, wiem, że mogę wypisać wszystkie pola z jeden tabeli po przecinku, ale to tez chyba można skrócić, dane dalej są w pętli while, przez mysql_fetch_assoc ($zmienna[nazwa]), i trochę kolidują ze sobą.
nospor
  1. SELECT tabela1.*, tabela2.nazwa AS innanazwa.....
andrzej_
I dziękuje ponownie, widząc swoje braki wiedzy, wracam do manuala.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.