我真的不确定如何最好地编写此查询。我有 3 个表,我需要根据其他表中的条件运行从其中一个提取数据的查询。
表:调查、调查国家、调查类别
调查:
ID | 调查ID | network_id
调查国家:
ID | 调查ID | 网络 ID | 国家
调查类别:ID | 调查ID | 网络 ID | 类别
(survey_countries 和survey_categories 中的survey_id 与surveys 表中的survey_id 列相关,而不是id 列)。
我需要从特定国家和特定类别的调查中检索数据。然后我需要能够对其他类别进行 UNION,但我想我以后可以这样做。我的尝试:
SELECT surveys.*
FROM survey_countries
LEFT JOIN surveys ON survey_countries.survey_id = surveys.survey_id ANd survey_countries.network_id = surveys.network_id
LEFT JOIN survey_categories ON survey_countries.survey_id = surveys.survey_id AND survey_categories.network_id = surveys.network_id
WHERE survey_countries.country = 'GB'
AND survey_categories.category = 'my_category'
GROUP BY surveys.id
谢谢!
编辑:以下似乎有效:
SELECT s.*, ca.category, co.country
FROM surveys s
LEFT JOIN survey_countries co ON s.survey_id = co.survey_id AND s.network_id = co.network_id
LEFT JOIN survey_categories ca ON s.survey_id = ca.survey_id AND s.network_id = ca.network_id
WHERE ca.category = 'uncategorised'
AND co.country = 'GB';
我只是不确定这是不是最好的方法,因为我以后需要获取多个类别的调查?