Laden...

sql abfrage für forum

Erstellt von Eisbaer_82 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.827 Views
E
Eisbaer_82 Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
sql abfrage für forum

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!

D
496 Beiträge seit 2005
vor 17 Jahren

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."

E
Eisbaer_82 Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren

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?

D
496 Beiträge seit 2005
vor 17 Jahren

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."

E
Eisbaer_82 Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren

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.

D
496 Beiträge seit 2005
vor 17 Jahren

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."

E
Eisbaer_82 Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren

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

D
496 Beiträge seit 2005
vor 17 Jahren

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."

E
Eisbaer_82 Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren

BIST N SCHATZ !!! 🤔 🤔

L
497 Beiträge seit 2006
vor 17 Jahren

@demondriver: Haben die Klammern bei em HAVING einen tieferen Sinn?

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.