Spécifiquement, j'essaie de comprendre s'il est possible de générer du SQL qui fait ce que je veux faire dans la méthode find_by_sql de Ruby-on-Rails. Imaginez qu'il y ait des utilisateurs, qui sont joints cycliquement à d'autres utilisateurs par une table de jointure. Chaque utilisateur a la possibilité de créer des commentaires.Est-il possible de définir une seule requête SQL qui dessine un ensemble de foreign_keys admissibles à partir d'une table et les utilise ensuite pour en filtrer une autre?
Je voudrais une requête SQL pour retourner les 100 derniers commentaires créés par les amis d'un utilisateur donné afin que je puisse les afficher tous dans un endroit pratique pour l'utilisateur à voir.
Ceci est difficile, car je cherche essentiellement à filtrer les commentaires en indiquant si leurs clés étrangères pour leur auteur sont contenues dans un ensemble de clés obtenues à partir des clés primaires des amis de l'utilisateur.
Editer: Clarifier la configuration. Je ne sais pas exactement comment écrire une définition de schéma, donc je vais le décrire en termes de Rails.
class User
has_many :friends, :through => :friendships
has_many :comments
end
class Friendship
belongs_to :user
belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end
def Comment
has_one :User
end
vous êtes plus susceptible d'obtenir une réponse si vous affichez les définitions de schéma de table –