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:
Sono sicuro che c'è un errore concettuale, più che di distrazione, ma non riesco a capire qual è... nemmeno con l'aiuto del manuale.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
Mi dareste una mano, per cortesia?![]()

Rispondi quotando