Buongiorno a tutti
Ho una query SQL che è piuttosto complessa, e non si comporta come vorrei... vorrei sapere dove sbaglio.
Innanzitutto spiego:
Devo unire due SELECT, ognuna di queste SELECT ha due JOIN su altre tabelle, e va raggruppata in base a un campo.
Alla fine, vorrei ordinare i risultati in base al valore di uno dei campi presenti nelle tabelle joinate (è lo stesso campo).
Sembra che il problema sia il GROUP BY: prende per ogni id un record a caso, e quindi alla fine non mi ritrovo più con l'ordinamento...
Ecco la query:
codice:
(
SELECT
users_cats.catid,
users_cats.cat_title,
users_cats.siteurl,
users_subscribedcats.userid,
users_subscribedcats.catid,
users_subscribedcats.in_sitecats,
users_arts.date,
users_arts.artid,
users_arts.artlink,
users_arts.arttitle,
users_arts.text,
users_arts.author
FROM
users_subscribedcats
LEFT JOIN
users_cats
ON users_subscribedcats.catid = users_cats.catid
LEFT JOIN
users_arts
ON users_cats.catid = users_arts.catid
WHERE users_subscribedcats.userid = $userid
AND users_subscribedcats.in_sitecats =0
GROUP BY users_subscribedcats.catid
) UNION (
SELECT
cats.catid,
cats.cat_title,
cats.siteurl,
users_subscribedcats.userid,
users_subscribedcats.catid,
users_subscribedcats.in_sitecats,
arts.date,
arts.artid,
arts.artlink,
arts.arttitle,
arts.text,
arts.author
FROM
arts
LEFT JOIN
cats
ON users_subscribedcats.catid = cats.catid
LEFT JOIN
users_subscribedcats
ON users_subscribedcats.catid = arts.catid
WHERE users_subscribedcats.userid = $userid
AND users_subscribedcats.in_sitecats =1
GROUP BY arts.catid
)
ORDER BY date DESC LIMIT 20
Sono sicuro che c'è un errore concettuale, più che di distrazione, ma non riesco a capire qual è... nemmeno con l'aiuto del manuale.
Mi dareste una mano, per cortesia?