Query annidata non funzionante!

9 contenuti / 0 new
Ultimo contenuto
Query annidata non funzionante!

Salve,
ultimamente sto modificando l'aggregator integrato su Drupal 5.6 in modo tale che nella pagina principale di "Aggregatore notizie" si ha la visualizzazione dell'ultima news per ogni feed.
Ad esempio ho 3 feed: tizio.net, caio.com, e sempronio.org. Devo fare visualizzare soltanto 3 news, che saranno rispettivamente le ultime di ogni feed per ordine di data.
Quindi ho modificato la funzione aggregator_page_last() di aggregator.module riscrivendo la query sql in questo modo:

function aggregator_page_last() {
  drupal_add_feed(url('aggregator/rss'), variable_get('site_name', 'Drupal') . ' ' . t('aggregator'));
/**
* Old Query: SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_item} i INNER JOIN {aggregator_feed} f ON i.fid = f.fid ORDER BY i.timestamp DESC, i.iid DESC
*/
  return _aggregator_page_list
('SELECT i.*, f.title AS ftitle, f.link AS flink FROM ( SELECT * FROM aggregator_item ORDER BY timestamp DESC ) AS i INNER JOIN aggregator_feed AS f ON i.fid = f.fid GROUP BY i.fid', arg(1));
}
Se notate ho messo come commento la query precedente nel caso in cui la vorreste vedere. La query funziona perfettamente ed i risultati della visualizzazione sono corretti come volevo io. Il problema sta nel fatto che mi compare questo warning

user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 query: SELECT COUNT(*) FROM ( SELECT * FROM aggregator_item in /var/www/federico2/includes/database.mysql.inc on line 172.

E' possibile perchè sto usando una subquery?! ho provato di tutto. Aspetto vostre notizie.

Achtung! Per fare ciò che vuoi non è necessario modificare moduli core. ;)

E come dovrei fare?

Semplicemente creare un php snippet per prendere dal database i 3 contenuti che ti servono.

Mi spiegheresti meglio? Sono utente drupal da pochi giorni.

Sai che puoi usare PHP nei blocchi o nodi? Puoi creare un blocco nel formato PHP visibile solo nella pagina del agregator.

L'inglese non lo mastico molto però. Tu stesso non potresti rispondermi?

Non vorrei sbagliare,ma le query annidate non funzionano su tutte le versioni di mysql ma solo a partire da una che non ti so definire.