[MySQL] FROM 2 tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- -

- -

16/09/2006 15:15:00
Quote Anchor link
Ik heb voor het selecteren van nieuwsartikelen met meerde categorieën deze query gemaakt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    SELECT
        a.id,
        a.title,
        a.imageUrl AS articleImageUrl,
        a.date,
        c.imageUrl AS catImageUrl,
        COUNT( r.replyid ) AS nrReplies
    FROM
        article a,
        article_cats c_koppel
    LEFT JOIN
        articlereply r
    ON
        a.id = r.articleID
    LEFT JOIN
        category c
    ON
        c.id = c_koppel.cid
    WHERE
        a.articleType = 'news'
    AND
        a.id = c_koppel.aid
    AND
        DATE_ADD(a.date, INTERVAL 3 DAY) >= NOW()
    GROUP BY
        a.id
    ORDER BY
        date DESC


De structuur van de tabellen:

article
id -> article_cats.aid
title
imageUrl
date
articleType

article_cats
id
aid -> article.id
cid -> category.id

category
id -> article_cats.cid
imageUrl
name

Als het goed is moet ik m.b.v. deze query dus voor elke category van een artikel een aparte rij krijgen, met daarin de gezelecteerde velden. Die kan ik dan vervolgens verwerken tot 1 rij per artikel, waarin dan een array zit met de imageUrl van de categorieën.

Nu is het probleem dat hij maar 1 rij selecteert per artikel, ook als er in article_cats 5 rijen staan voor dat artikel, en het dus eigenlijk 5 rijen zou moeten teruggeven.

Weet iemand waar de fout ziet?
 
PHP hulp

PHP hulp

12/01/2025 16:16:24
 
Robert Deiman

Robert Deiman

16/09/2006 15:39:00
Quote Anchor link
En zo?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SELECT
        a.id,
        a.title,
        a.imageUrl AS articleImageUrl,
        a.date,
        c.imageUrl AS catImageUrl,
        COUNT( r.replyid ) AS nrReplies
    FROM
        article a,
        article_cats c_koppel
    LEFT JOIN
        articlereply r
    ON
        a.id = r.articleID
    LEFT JOIN
        category c
    ON
        c.id = c_koppel.cid
    WHERE
        a.articleType = 'news'
    AND
        a.id = c_koppel.aid
    AND
        DATE_ADD(a.date, INTERVAL 3 DAY) >= NOW()
     ORDER BY
        a.id,    
        date DESC
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Jan Koehoorn

Jan Koehoorn

16/09/2006 15:50:00
Quote Anchor link
Geef eens een voorbeeld van de gewenste output? Dus hoe het er op de pagina uit komt te zien?

En dit:
LEFT JOIN
articlereply r
betekent dat er ook nog een tabel articlereply is. Hoe ziet die er uit?
 
- -

- -

16/09/2006 18:10:00
Quote Anchor link
dat is de tabel met replies:

articlereply
replyID
articleID -> article.id
...

@Robert: Dat werkt volgens mij sowieso niet, want als je COUNT gebruikt moet je ook GROUP BY gebruiken...
Gewijzigd op 01/01/1970 01:00:00 door - -
 
- -

- -

17/09/2006 14:16:00
Quote Anchor link
Niemand?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.