De host waar een van mijn websites zit heeft MySQL geüpgrade naar v5.0.12, maar nu werken mijn JOIN's niet meer. Ik heb de hele JOIN-pagina (klik) door zitten spitten, maar ik wordt er echt niet wijzer uit :S

Ik heb deze query:


	SELECT
		a.id,
		a.title,
		a.imageUrl AS articleImageUrl,
		a.date,
		c.imageUrl AS catImageUrl,
		COUNT(r.replyID) AS aant_replies
	FROM
		gamercc_article a,
		gamercc_article_cats c_koppel,
		gamercc_category c
	LEFT JOIN
		gamercc_articlereply r
	ON
		a.id = r.articleID
	WHERE
		a.articleType = 'news'
	AND
		a.id = c_koppel.aid
	AND
		c.id = c_koppel.cid
	AND
		DATE_ADD(a.date, INTERVAL 3 DAY) >= NOW()
	GROUP BY
		a.id
	ORDER BY
		date DESC


Daarop geeft hij deze error:

Invalid query: Unknown column 'a.id' in 'on clause'

Wil iemand misschien de query ombouwen? Misschien beetje veeleisend, maar ik kom er niet uit :S

PS: Ik wil wel met JOIN blijven werken, want ik moet nog een hele website omzetten naar de nieuwe versie, en om er nou allemaal WHERE's voor te gaan gebruiken... Dat is met iets te veel werk.
Nog steeds dezelfde fout? en heb je hem al eens geechoed en in phpmyadmin gestopt?
Nog steeds zelfde fout. Ook in phpMyAdmin doet ie het niet :(
Hmmm, zo lijkt ie het te doen:


SELECT
        a.id,
        a.title,
        a.imageUrl AS articleImageUrl,
        a.date,
        c.imageUrl AS catImageUrl,
        COUNT(r.replyID) AS aant_replies
    FROM
        gamercc_article a,
        gamercc_article_cats c_koppel,
        gamercc_category c
    JOIN
        gamercc_articlereply r
    ON
        (id = articleID)
    WHERE
        a.articleType = 'news'
    AND
        a.id = c_koppel.aid
    AND
        c.id = c_koppel.cid
    AND
        DATE_ADD(a.date, INTERVAL 3 DAY) >= NOW()
    GROUP BY
        a.id
    ORDER BY
        date DESC


(de tabelnamen in de ON-clause weggehaald)
LEFT JOIN
gamercc_articlereply r
ON
(a.id = r.articleID)

moet dat niet zijn?

LEFT JOIN
gamercc_articlereply
ON
(a.id = gamercc_articlereply.articleID)

Ik zie namelijk op de join site geen alliassen in de JOIN clausule
@Klaasjan: Nee, had ik ook al geprobeerd.

Heel strange, wat ik in de query in mijn vorige post heb gedaan werkt in een andere query weer niet :S Weird...
wil je trouwens een een op meer relatie?

1 3
1 5
1 6

of

1 1
2 2
4 4

hier :

JOIN
gamercc_articlereply r
ON
(id = articleID)
?
ik gok 1 op meer
1 op meer ja. Hoezo?
Anders kon je ook anders joinen Maar ja dat kan nu niet. ik zie de fout trouwens niet in je sql lijkt gewoon goed

SELECT
        `gamercc_article`.`id`,
        `gamercc_article`.`title`,
        `gamercc_article`.`imageUrl` AS articleImageUrl,
        `gamercc_article`.`date`,
        `gamercc_category`.`imageUrl` AS catImageUrl,
        COUNT(`gamercc_articlereply`.`replyID`) AS aant_replies
    FROM
        `gamercc_article`,
        `gamercc_article_cats`,
        `gamercc_category`
    LEFT JOIN
        `gamercc_articlereply`
    ON
        `gamercc_article`.`id` = `gamercc_articlereply`.`articleID`
    WHERE
        `gamercc_article`.`articleType` = 'news'
    AND
        `gamercc_article`.`id` = `gamercc_article_cats`.`aid`
    AND
        `gamercc_article`.`id` = `gamercc_article_cats`.`cid`
    AND
        DATE_ADD(`gamercc_article`.`date`, INTERVAL 3 DAY) >= NOW()
    GROUP BY
        `gamercc_article`.`id`
    ORDER BY
        `gamercc_article`.`date` DESC


Yeah, I know, back tics...
Je was er een paar vergeten, maar nadat aangepast te hebben:

Unknown column 'gamercc_article.id' in 'on clause'

Reageren