基于给定数据库Schema编写SQL查询特定事物的指定属性值
查询特定事物的指定属性值
我来帮你搞定这个SQL查询,先直接上可用的语句,再给你拆解逻辑:
SELECT tav.value_date FROM thing t JOIN thing_attribute ta ON t.id_thing_type = ta.id_thing_type JOIN thing_attribute_value tav ON ta.id = tav.id_thing_attribute WHERE t.id = :specific_thing_id -- 替换成你要查询的目标事物ID AND ta.name = :target_attribute_name; -- 替换成你要找的属性名称
语句逻辑拆解
- 第一步:通过
thing表的id定位到你要查询的特定事物 - 第二步:利用
id_thing_type关联到该事物类型对应的属性表thing_attribute,再通过name筛选出你需要的指定属性 - 第三步:最后关联
thing_attribute_value表,拿到这个属性对应的value_date值
补充场景优化
如果存在「某个属性没有对应值」的情况(也就是thing_attribute_value里无匹配记录),可以把最后一个JOIN改成LEFT JOIN,这样即使没有值也会返回NULL,而不是直接过滤掉这条结果:
SELECT tav.value_date FROM thing t JOIN thing_attribute ta ON t.id_thing_type = ta.id_thing_type LEFT JOIN thing_attribute_value tav ON ta.id = tav.id_thing_attribute WHERE t.id = :specific_thing_id AND ta.name = :target_attribute_name;
另外记得把语句里的:specific_thing_id和:target_attribute_name替换成实际的参数值,或者根据你用的工具改成对应的参数绑定方式,避免SQL注入风险哦。
内容的提问来源于stack exchange,提问作者dtburgess
相关产品推荐
相关产品推荐

