J'ai la déclaration MySQL suivante:Sequel JOIN et OÙ
SELECT
a.id,
b.category,
b.message,
b.is_valid
FROM
"NODE" a,
"SYSTEM_STATUS" b
WHERE
("LAST_HEARTBEAT" > TIMESTAMP '2017-09-18 15:10:04.471826') AND
a.id = b.node_id
Je veux convertir ce qui précède Sequel
Je cette méthode qui est une réduire la version de la déclaration ci-dessus MySQL:
0> self.class.live_nodes
SELECT "ID" FROM "NODE" WHERE ("LAST_HEARTBEAT" > TIMESTAMP '2017-09-18 15:11:12.906017')
=> [#<MyApp::Model::Node @values={:id=>348}>]
maintenant, en utilisant les résultats de cette méthode, je veux faire un join
avec une table appelée system_status
, où les résultats de node.id = system_status.node_id
.
Ensuite, je veux prendre les résultats de live_nodes
et rejoindre à system_status
où le résultat est égal à system_status.node_id
, et je ne suis pas sûr de savoir comment le faire.
J'ai essayé les éléments suivants:
0> MyApp::Model::Node.where { last_heartbeat > Time.now - HEARTBEAT_TIMEOUT.seconds }.join(:system_status, :node_id, :id)
Mais reçu cette erreur
=> no implicit conversion of Symbol into Integer
Je ne sais pas comment le résoudre .. Je ne pense pas non que je fais l'aliasing correctement
est votre MySQL correct? Juste à partir de SQL brut, la partie jointe dans le SQL me manque. (Mais je ne connais pas MySQL, donc cela peut être fait par une syntaxe spéciale de MySQL). La jointure pourrait être construite avec 'DB [: a] .inner_join (: b,: node_id =>: id)' dans la suite. – knut