2009-11-23 13 views
0

Est-ce que quelqu'un connaît un moyen de construire un tableau croisé dynamique en utilisant activerecord qui serait à distance DB neutre? J'ai essayé d'éviter d'utiliser find_by_sql et les requêtes spécifiques à la base de données, mais pour un tableau croisé dynamique ou une requête de tableau croisé, je n'ai aucune idée de comment le faire d'une manière qui n'est pas spécifique à MySQL. IE my mySQL find_by_sql casse sur une base de données postgresql.rails db Tableau croisé dynamique ou tableau croisé dynamique

J'ai trouvé http://crosstab.rubyforge.org/ ce gemme obscur de tableau croisé qui pourrait fonctionner, mais je me demande si quelqu'un d'autre a une meilleure solution.

exemple quelque chose comme ce qui rediculous flips fondamentalement juste l'axe sur une table:

SELECT availables.name, rooms.id, 
    MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 0, availables.price, '')) AS day1, 
    MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 1, availables.price, '')) AS day2, 
    MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 2, availables.price, '')) AS day3, 
    MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 3, availables.price, '')) AS day4, 
    MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 4, availables.price, '')) AS day5, 
    MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 5, availables.price, '')) AS day6, 
    MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 6, availables.price, '')) AS day7, 
AVG(availables.price),SUM(availables.price) 
FROM `availables` 
INNER JOIN rooms 
ON availables.room_id=rooms.id 
WHERE availables.room_id = '18382' 
GROUP BY availables.name 
+0

également trouvé http: //api.rubyreports .org / – holden

Répondre

Questions connexes