Ich habe die Sinne und Übersetzungen des Wortes in verschiedenen Sprachen, hier ist Schema http://sqlfiddle.com/#!15/cba5e/2 Ich brauche alle Sinne und nur Spanien Übersetzungen (Code "es"), so abfragen sollte so aussehen:Eager loaing mit LINKS OUTER JOIN und mehrere Bedingungen in der ON-Klausel
SELECT *
FROM senses s
LEFT OUTER JOIN translations t ON
s.id = t.sense_id AND t.language_code = 'es';
Kann ich es mit eager_load/includes/.. tun?
-Code wie
Sense.includes(:translations).where(translations: { language_code: 'es' })
nicht funktioniert, weil es Bedingungen in der WHERE-Klausel angeben und erzeugen Abfrage wie
SELECT *
FROM senses s
LEFT OUTER JOIN translations t ON s.id = t.sense_id
WHERE t.language_code = 'es';
und ich nur mit "es" Übersetzungen abtastet. Aber ich brauche alle Sinne + Übersetzungen Spanien, sehen Sie den Unterschied: http://sqlfiddle.com/#!15/cba5e/2 und http://sqlfiddle.com/#!15/cba5e/3
Von https://www.postgresql.org/docs/current/static/queries-table-expressions.html: Einschränkung in der Klausel verarbeitet ON gestellt vor die Verbindung, während eine Beschränkung in der platziert WHERE-Klausel verarbeitet wird nach verbinden die
Ich habe die Antwort unten beantwortet, bitte nehmen Sie sich Zeit, um es zu bewerten – bLaXjack