GRY-Online.pl --> Archiwum Forum

Pomoc w zapytaniu SQL

20.09.2007
17:00
[1]

Telemach [ Pretorianin ]

Pomoc w zapytaniu SQL

Mam taką tabelę:

point_id - point_article- point_sender - point_receiver - point_value


odpowiednio mam wartości:
- 1 - 6 - 3 - 2 - 1
- 2 - 6 - 4 - 2 - 2
- 3 - 5 - 2 - 1 - 3

Jest to system przyznawania punktów użytkownikom w związku z artykułem, który napisali. Czyli użytkownik A (sender) przyznaje B (receiver) 3 punkty (value) za określony temat (article).

Umożliwiam przyznanie 1,2 lub 3 punktów.
I teraz chciałbym zliczyć ile razy dla danego tematu przyznano 1, 2 lub 3 punkty.

I mam taką procedurę:

ALTER PROCEDURE dbo.CheckAwards
@topic_id int
AS

SELECT COUNT(point_id) AS Point1
FROM dbo.points
WHERE (point_topic_id = @article_id) AND (point_value = 1)

SELECT COUNT(point_id) AS Point2
FROM dbo.points
WHERE (point_topic_id = @article_id) AND (point_value = 2)

SELECT COUNT(point_id) AS Point3
FROM dbo.points
WHERE (point_topic_id = @article_id) AND (point_value = 3)

Return


Tylko ta procedura wyrzuca mi wynik w postaci 3 niezależnych rekordów. Nie tak jak pojedynczy select i dostaję 3 rekordy, tutaj każdy rekord traktowany jest oddzielnie (jak tabela?).

Mógłby mnie ktoś naprowadzić jak tą procedurę przekształcić, żeby dostać pożądany wynik taki, jak w przypadku pojedynczego selecta?

20.09.2007
17:16
[2]

wysia [ Senator ]

SELECT point_value, Count(point_value) FROM dbo.points WHERE (point_topic_id = @article_id) GROUP BY point_value ORDER BY point_value

20.09.2007
17:33
[3]

Telemach [ Pretorianin ]

@wysia

Tylko, że ja chcę uzyskać wynik, ile punków o wartości 1, 2 i 3 uzyskał dany artykuł, czyli:

- article_id - point1 - point2 - point3
- 33 - 3 - 2 - 0

Czyli artykuł o id=33 uzyskał 3 x 1 punkt, 2 x 2 punkty i zero punktów 3.

20.09.2007
17:36
smile
[4]

wysia [ Senator ]

To odpal tego selecta, i zobacz co wyjdzie..

Nie ma za co:)

20.09.2007
17:39
smile
[5]

Telemach [ Pretorianin ]

Wiedziałem, że banalne :)

Dziękuję Ci bardzo.
Jak widać rozwiązanie zazwyczaj leży bliżej niż sądzimy :)

20.09.2007
17:55
[6]

Telemach [ Pretorianin ]

A mógłbyś mi pomóc, żeby zastosować do tego zapytania funkcję PIVOT, bo nie bardzo sobie z tym mogę poradzić. Chciałbym zamienić wiersze z kolumnami.

20.09.2007
18:18
[7]

Telemach [ Pretorianin ]

^

© 2000-2026 GRY-OnLine S.A.