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