嗨,我正在開發一個基于 ruby?? on rails 服務器設定的 React 應用程式,它使用 postgres。
我在資料庫中有兩個表,電影和流派。在電影表中,有一個欄位流派 ID。在流派表中,它的 ID 是它如何鏈接到電影表的流派 ID。我正在嘗試查找電影表中沒有列出相應 ID 的所有型別。我嘗試了兩種不同的方法,直接使用 SQL。
sql = "SELECT count(*) FROM genres
LEFT JOIN movies
ON genres.id = movies.genre_id
WHERE genre.id = movies.genre"
genres_with_no_movie = ActiveRecord::Base.connection.exec_query(sql).rows[0][0]
軌道上的紅寶石方式。
genres_with_no_movie = Genre.joins(:movies).count()
這兩個都給了我連接的數量。它給了我電影確實有相應型別的地方。我試圖找到沒有連接的電影的型別。我嘗試了 WHERE NOT EXISTS 代替 where 并且沒有用。
任何幫助將不勝感激。
uj5u.com熱心網友回復:
LEFT JOIN 允許您從表流派中檢索行并且在電影中沒有對應關系,即movies.genre IS NULL :
SELECT count(*)
FROM genres
LEFT JOIN movies
ON movies.genre_id = genres.id
WHERE movies.genre IS NULL
uj5u.com熱心網友回復:
另一種可能更快,并且(恕我直言更直接)使用 NOT EXISTS 而不是 join。
select count(*)
from genres g
where not exists
(select null
from movies m
where m.genre_id = g.id
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/344800.html
標籤:反应 红宝石轨道 PostgreSQL
上一篇:擁有1個以上設備組的用戶
