hallo bin neu hier und habe eine frage.
ich bin dabei ein forum zu schreiben und habe jetzt ein kleines problem mit einer sql abfrage.
folgende zwei tabellen sind einbezogen
tabelle user
id (integer)
nickname (varchar)
geloescht (tinyint(1))
...
tabelle post
id(integer)
user_id (integer)
geloescht (tinyint(1))
...
Jetzt brauche ich für die memberauflistung eine abfrage die mir alle nicknames (where geloescht=0) und die von denen geposteten beiträge (where geloescht=0) auflistet. was dann wie folgt aussieht:
nickame ----------- gepostet
nickname 1----------5
nickname 2----------10
nickname 3----------0
Bitte um hilfe, vielen dank!
wie wärs hiermit
SELECT nickname, sum(geposted) As summe
from user INNER JOIN name ON user.id = post.id
group by nickname
having geloescht = 0
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Original von demondriver235
sum(geposted) As summe
da liegt ja mein problem die summe is ja
COUNT(id) FROM post WHERE geloescht=0 AND user_id= ????
die fragezeichen sollen jetzt alle user aus der tabelle user sein die nicht geloescht sind.
ich weiß nicht ob das rüber kam aber in der tabelle post steht nicht drin wieviele er gepostet hat sondern da stehen nur alle posts drin die existieren
ICh weiß nich weiter. man könnte ja eine abfrage machen nach allen nicht gelöschten usern und dann mit ner schleife für jeden user die anzahl der geposteten einzeln abfragen aber das is nich wirklich schön.
weitere vorschläge?
ok probier mal bitte so:
SELECT user.nickname, count(post.user_id) As Anzahlposts
from user INNER JOIN name ON user.id = post.id
group by user.nickname
having user.geloescht = 0
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Original von demondriver235
ok probier mal bitte so:SELECT user.nickname, count(post.user_id) As Anzahlposts
from user INNER JOIN name ON user.id = post.id
group by user.nickname
having user.geloescht = 0
sorry aber was soll das "name" in zeile 2 ich komm mit dem join krempel nicht klar. ich kenne bzw benutze das immer nur in komma schreibweise. wenn ich mich aber nicht irre joinst du jetzt die zwei tabellen nach der user.id und post.user_id , das hab ich auch schoon gemacht nur fliegen dann alle user die keine posts geschrieben haben raus.
sorry das sollte natürlich heissen:
SELECT user.nickname, count(post.user_id) As Anzahlposts
from user INNER JOIN post ON user.id = post.user_id
group by user.nickname
having user.geloescht = 0
das sollte eigendlich funktionieren aber ich bau mir das mal eben nach.
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
jo das is das was ich meinte, so funzt es aber alle user die nichts gepostet haben fliegen raus
Original von demondriver235
das sollte eigendlich funktionieren aber ich bau mir das mal eben nach.
vielen dank für deinen aufwand
jetzt nochmal getestet so das auch die user ohne post angezeigt werden:
SELECT user.nickname, Count(post.user_id) AS Anzahlposts
FROM user LEFT JOIN post ON user.id = post.user_id
GROUP BY user.nickname, user.geloescht
HAVING (((user.geloescht)=0))
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
@demondriver: Haben die Klammern bei em HAVING einen tieferen Sinn?
Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.