简体   繁体   中英

SQL query with multiple joins using Rails models as reference

I want to select a count of all surveys where the survey.property.address.city == "Garrison" . I have the following models:

Survey
  many_to_one :property

Property
  one_to_many :surveys
  many_to_one :address

Address
  one_to_many :properties

How do I query using SQL?

SELECT count(*) FROM surveys JOIN...

Assuming that your table is named like rails would name those objects and you have the foreign keys that are implied by your relations:

SELECT
    COUNT(*)
FROM
    surveys
JOIN
    properties ON surveys.property_id = properties.id
JOIN
    addresses ON addresses.id = properties.address_id
WHERE
    addresses.city = 'Garrison'

Also your relations are strangely defined... I'm assuming that that is just a psuedocode version to express the relations.

edit: I corrected the second join, because I believe I had the relations backwards.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM