Probleme mit Nullwerten

der_Goof

Neuer Benutzer
Beiträge
4
Hallo zusammen,

ich komme mit meiner aktuellen Abfrage leider nicht weiter. Zu IDs (post_id) werden mehrmals Werte im Bereich 1-5 zugeteilt (rating_id). Folgendes will ich erreichen: Ich würde gerne die IDs auslesen, die öfters die Werte 1,2,3 zugeteilt bekommen haben als die Werte 4 und 5. Aktuell sieht meine Query wie folgt aus:

Code:
select post_id as test, count(rating_id) as test2
from phpbb_post_ratings
where rating_id = 1 or rating_id = 2 or rating_id = 3
group by test
having count(rating_id) > (
    select count(rating_id)
    from phpbb_post_ratings
    where (rating_id = 4 or rating_id = 5) and test = post_id
    group by post_id
    )

Das Problem ist nun, dass beide Selects keine ID/Werte ausgeben, sofern die ID entweder nie 1,2,3 oder 4,5 zugewiesen bekommt. Bei der äußeren Select ist das eher kein Problem, denn wenn in der äußeren nichts gefunden wird, können außen kaum mehr Einträge als innen vorhanden sein :) Aber wenn außen z.B. 6 Einträge, innen 0 gefunden werden, wird diese ID nicht ausgegeben, denn in der inneren Select-Anweisung wurde ja nichts gefunden. Wie kann ich es hinbekommen, dass da irgendwie noch ne 0 bei raus kommt?
 
Werbung:
Neuer Versuch, bringt allerdings gar nix ...

Code:
select post_id as test2, count(rating_id)
from phpbb_post_ratings
group by test2
having (
    SELECT count(rating_id)
    from phpbb_post_ratings
    WHERE (rating_id = 1 or rating_id = 2 or rating_id = 3) and test2 = post_id
    group by post_id
    ) > (
    SELECT count(rating_id)
    from phpbb_post_ratings
    WHERE (rating_id = 4 or rating_id = 5) and test2 = post_id
    group by post_id
    )

Mich wundert nur, dass count(rating_id) jetzt stets seine Werte um eins inkrementiert ausgibt ...
 
Werbung:
Lösung falls es wen interessiert:

Code:
select post_id as test2, count(rating_id)
from phpbb_post_ratings
group by test2
having (
    SELECT count(rating_id)
    from phpbb_post_ratings
    WHERE (rating_id = 1 or rating_id = 2 or rating_id = 3) and test2 = post_id
    group by post_id
    ) > (
    SELECT count(rating_id) * 0.5
    from phpbb_post_ratings
    WHERE test2 = post_id
    group by post_id
    )
 
Zurück
Oben