2016-06-17 22 views
0

ich die folgende Abfrage in SQL geschrieben haben:Fortsetzung generierten SQL Get Feldnamen ohne Backticks zu erzeugen

Select  * 
From  npt_articles 
Inner Join npt_authors 
Inner Join users 
Inner Join npt_teams 
Where  npt_teams.id In (1) 

und die folgende SQL durch die Fortsetzung gem generiert:

SELECT  * 
FROM  `npt_articles` 
INNER JOIN `npt_authors` 
INNER JOIN `users` 
INNER JOIN `npt_teams` 
WHERE  ('npt_teams.id' IN (1)) 

Die ersten Ergebnisse zurück , die zweite nicht, wenn ich die Back-Ticks dann die zweite entfernt, dann erzeugt es das gleiche Ergebnis wie die erste.

Dies ist der Code, der die zweite SQL erzeugt:

team_articles = user.npt_teams.to_a.inject({}) {|arts,team| 
    arts.merge({ team.name => 
    NptArticle.join(:npt_authors).join(:users).join(:npt_teams).where('npt_teams.id' => [team.id]).to_a.uniq}) 
    } 

Wie kann ich die Abfrage ohne Backticks erzeugt werden?

+1

Sind Sie sicher, dass die Back-Zecken sind das Problem und nicht die WHERE ('npt_teams.id' IN (1)) '? Back-Ticks sollten nicht das Problem verursachen - die einfachen Anführungszeichen sollten jedoch. – Siyual

+0

ok, dann wie bekomme ich eine Fortsetzung, um es ohne Anführungszeichen dann zu generieren? – Thermatix

+0

Ich kann Ihnen leider nicht helfen. Ich weiß nichts über 'Sequel'. – Siyual

Antwort

1

Sie sollten so etwas wie dies versuchen:

.where(:npt_teams__id => [team.id]) 
+0

Das funktionierte, das Ändern des Bits funktionierte auch: '.where (" npt_teams.id IN (# {team.id}) "). Obwohl es nun das Skript zum Aufhängen bringt, funktioniert es in mysqlworkbench ... – Thermatix