1
在Rails应用程序我有两个相关(如多对多)表 - 卷和轨道。如何使用原始SQL查询来模拟Active Record关联?
卷是广播节目集的集合。每集有多个曲目。但是每个曲目都可以出现在很多节目中。
卷:
id | title
-----+-----------------------
23 | Oldstyle
24 | How to stop worrying
轨道:
id | artist | title
------+----------------------+------------------------
4764 | John Lennon | Mind Games
4765 | George Harrison | All Those Years Ago
4766 | Paul McCartney | Here Today
我需要的是总曲目由艺术家和显示,有艺术家曲目尽显卷。像Artist.select(name: 'Beatles').volumes
。
的问题是我没有艺术家模型。而且不想创建它,因为我相信这会使手动数据清理更加困难。
例如,我可以查询数据,我需要这样的:
SELECT DISTINCT t.artist, v.number
FROM tracks t
JOIN volumes_tracks vt ON vt.track_id = t.id
JOIN volumes v ON v.id = vt.volumes_id
GROUP BY artist, number;
但有可能包装为方便其模特般的数据结构?
为什么不只是创造艺术家的模式? 如果你担心表现,那么我想你想拥有这个模型。如果没有,那么数据库中的一些艺术家记录有什么危害,永远不会被清理干净。 (和可清洗相当easiliy,喜欢的东西:'Artist.includes(:轨)。凡({曲目:{ID:无}})。delete') – gernberg
也许,你是对的。我不想拥有Artist模型的唯一原因是因为它会使手动审查数据变得更加复杂。有时候,Track表中的行被破坏 - 例如,它具有'artist:“Bob Dylan - 风中的Blowng”,track:“”'。但我可以通过稍微更复杂的连接查询来克服这种麻烦。 – vtambourine