Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie podające liczbę wystąpień klucza obcego w innej tabeli
Ziels
post
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

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


Witam

Mam następujący problem - mam dwie tabele, ratings oraz articles. Potrzebuję jakimś zapytaniem wyciągnąć z tabeli articles dane dot. artykułu, dołożyć do tego kolumnę zawierającą liczbę użytkowników którzy oceniło dany artykuł, oraz posortować wg. niej. Przykładowe dane:

Kod
Articles
------
| id |
------
| 1  |

Ratings
-------------------------------------------------------
| id | type | article_id | user_id | value |
-------------------------------------------------------
| 1  |   1   |     1        |      1     |    5    |
| 2  |   2   |     1        |      1     |    8    |
| 3  |   1   |     1        |      2     |    7    |
| 4  |   2   |     1        |      2     |    9    |
| 5  |   1   |     1        |      3     |    4    |
| 6  |   2   |     1        |      3     |    2    |


Chciałbym żeby zapytanie zwróciło mi coś takiego:


Kod
Articles
-----------------------------
| id | ratings_count |
-----------------------------
| 1  |         3          |


Dlaczego 3? Trzech użytkowników oceniło artykuł wg różnych kryteriów (kolumna type). Do tej pory wykombinowałem takie zapytanie:

  1. SELECT article.*, count(*) AS ratings_count FROM article LEFT JOIN rating ON (article_id=article.id) GROUP BY article.id, ORDER BY ratings_count DESC;


Niestety zwraca mi to jedynie ile jest wpisów dotyczących danego artykułu, w tym wypadku będzie to 6, nie 3. Dodatkowo przy występowaniu innych kolumn w tabeli Articles musiałbym je dołożyć do Group By co wydajności raczej nie poprawi. Ktoś ma jakiś pomysł?
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: 2.10.2025 - 12:37