[SQL] Join hangt op een voorwaarde

Pagina: 1
Acties:

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 15-09 07:50

BierPul

2 koffie graag

Topicstarter
Ik haal met de volgende code de topic titels en verder info uit de DB.

Enkel als er geen replies bij dit topic zijn geeft ie geen waarde terug :(
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT tbl_topics.topic_id, 
     tbl_topics.titel, 
     tbl_topics.text, 
     tbl_topics.active, 
     tbl_topics.added, 
     tbl_users.usr_nme, 
     count(tbl_topic_replies.id) as aantal 

FROM tbl_topics, tbl_users, tbl_topic_replies 

WHERE tbl_topics.forum_id = '$forum_id' 

AND tbl_users.usr_id = tbl_topics.poster_id 

AND tbl_topic_replies.topic_id = tbl_topics.topic_id GROUP BY tbl_topics.topic_id

Kan ik dit in SQL afvangen zodat hij gewoon waarde 0 teruggeeft :?

Ja man


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 15-09 07:50

BierPul

2 koffie graag

Topicstarter
verkeerde forum |:(

ff topic move aanvragen :(

Ja man


Verwijderd

VB --> PW

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Een (left) outer-join gebruiken

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 15-09 07:50

BierPul

2 koffie graag

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
SELECT tbl_topics.topic_id, tbl_topics.titel, tbl_topics.text, tbl_topics.active,
        tbl_topics.added,
        tbl_users.usr_nme,
        count(tbl_topic_replies.id) as aantal

        FROM tbl_users, tbl_topics LEFT JOIN tbl_topic_replies ON tbl_topics.forum_id = '$forum_id'

        WHERE tbl_users.usr_id = tbl_topics.poster_id

        AND tbl_topic_replies.topic_id = tbl_topics.topic_id GROUP BY tbl_topics.topic_id

Query loopt wel goed , maar helaas als in tbl_topic_replies geen record is wat gerelateerd is aan tbl_topics.topic_id
krijg ik nog steeds geen waarde :(

Ja man


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Je moet als join criterium ook tbl_topic_replies.topic_id = tbl_topics.topic_id gebruiken. Omdat je dezein je where hebt, worden alleen records teruggegeven die hieraan voldoen. Als er geen reactie is, wordt er ook niet aan deze eis voldaan.

Door deze nu bij je join criterium te zetten wordt er, waneer er geen bijbehorende records gevonden worden, gewoon null gebruikt...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op dinsdag 29 januari 2002 12:01 schreef Janoz het volgende:
Door deze nu bij je join criterium te zetten wordt er, waneer er geen bijbehorende records gevonden worden, gewoon null gebruikt...
.. en die null kan je dan weer omzetten naar een 0 (tenminste dat wilde je in je eerste post) met bijvoorbeeld ifnull() of coalesce()

Today's subliminal thought is:

Pagina: 1