You are not logged in.

  • Login

1

Friday, December 9th 2011, 5:20pm

SQL Abfrage left join

Hallo Forum,
ich beschäftige mich derzeit mit einem Blog. Dazu möchte ich zu jedem Beitrag die Anzahl der Kommentare abfragen. Das Problem hierbei ist, dass diese Abfrage nur ein Ergebnis anstatt allen ausgibt :/ Leider sehe ich meinen Fehler aber nicht, deswegen bitte ich euch um Hilfe.

SQL Code

1
2
3
4
5
SELECT `blog`.`blog_id` , `blog`.`author_id`, `blog`.`blog_timestamp` , `blog`.`blog_title` , `blog`.`blog_text` , `blog`.`blog_category` , `users`.`user_name`, `users`.`user_id`, COUNT(`blog_comments`.`blog_id`) AS `count_comments`
FROM `users`, `blog` LEFT JOIN `blog_comments` 
ON `blog_comments`.`blog_id` = `blog`.`blog_id`
WHERE `blog`.`author_id` = `users`.`user_id`
ORDER BY `blog`.`blog_timestamp` DESC

2

Friday, December 9th 2011, 7:46pm

Wenn du Count nutzt, dann musst du Group By benutzen um das Ergebnis zu gruppieren. Dann kannst du natürlich die restlichen Daten nicht abrufen, richtig ;) Du musst 2 Queries draus machen.
(Zumindestens wenn es sich um MySQL handelt.)

3

Friday, December 9th 2011, 7:59pm

Danke, finde die Seite jetzt gerade nicht, aber dieses Tutorial hat mir erzählt, dass auch COUNTS möglich sind :/ naja, danke erstmal. okay, dann muss es eben über zwei queries gehen.
und ja es geht um MySQL :D

4

Friday, December 9th 2011, 8:52pm

count() muss du ja auch mit group by nutzen so zb

PL/SQL Code

1
2
3
4
5
6
SELECT `blog`.`blog_id` , `blog`.`author_id`, `blog`.`blog_timestamp` , `blog`.`blog_title` , `blog`.`blog_text` , `blog`.`blog_category` , `users`.`user_name`, `users`.`user_id`, COUNT(`blog_comments`.`blog_id`) AS `count_comments`
FROM `users`, `blog` LEFT JOIN `blog_comments` 
ON `blog_comments`.`blog_id` = `blog`.`blog_id`
WHERE `blog`.`author_id` = `users`.`user_id`
GROUP BY `blog`.`blog_id` , `blog`.`author_id`, `blog`.`blog_timestamp` , `blog`.`blog_title` , `blog`.`blog_text` , `blog`.`blog_category`, `users`.`user_name`, `users`.`user_id`
ORDER BY `blog`.`blog_timestamp` DESC

5

Friday, December 9th 2011, 9:28pm

Traumhaft! Danke euch Beiden :D
ja, so gefällt mir der Query schon wieder viel besser :)

6

Friday, December 9th 2011, 9:34pm

Hmm, wie verhält sich count bei NULL-Werten?
Mich würde z.B. interessieren ob du für irgendein Ergebnis 0 bekommst, oder ob die kleinste Zahl 1 ist.

7

Friday, December 9th 2011, 9:53pm

Hmm, wie verhält sich count bei NULL-Werten?
Mich würde z.B. interessieren ob du für irgendein Ergebnis 0 bekommst, oder ob die kleinste Zahl 1 ist.

bei null werten bekommt man 0

8

Friday, December 9th 2011, 10:51pm

Du hast recht, wie man im ersten Kommentar unter der Spezifikation lesen kann:
http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html

Allerdings kann das bei anderen Datenbanken schon wieder anders sein.

9

Saturday, December 10th 2011, 12:04pm

Du hast recht, wie man im ersten Kommentar unter der Spezifikation lesen kann:
http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html

Allerdings kann das bei anderen Datenbanken schon wieder anders sein.


Ich kenn mich eher von der Oracle DB aus, aber logisch ist es ja, wenn null, also gibt es keine werte dazu, dann liefert count 0.
Sonst wäre ja der kleinste Werte, das count lieferen kann 1

10

Saturday, December 10th 2011, 2:22pm

Also, ich habs jetzt etliche Male getestet um wirklich ganz sicher zu gehn. shureg hat voll und ganz Recht, COUNT hat mit 0 keine Probleme

Social bookmarks