我将一个项目的 id 传递给我的模型,我想在查询中使用这个项目 id 来查找它的 area_id 并从那里返回具有相同 area_id 的任何其他项目。我不确定如何做到这一点,我查看了子查询,但对我来说似乎不合适。这是我的结构。
物品:
ID -- Title -- Area_id(FK) -- Description -- Date_added
区域:
ID -- Place -- Date_Added
谢谢你的帮助
强尼
我将一个项目的 id 传递给我的模型,我想在查询中使用这个项目 id 来查找它的 area_id 并从那里返回具有相同 area_id 的任何其他项目。我不确定如何做到这一点,我查看了子查询,但对我来说似乎不合适。这是我的结构。
物品:
ID -- Title -- Area_id(FK) -- Description -- Date_added
区域:
ID -- Place -- Date_Added
谢谢你的帮助
强尼
首先,选择 are of you 项目:
SELECT Area_id FROM Item i WHERE ...
所以你得到一个区域ID
现在必须获取给定区域中的所有项目:
SELECT * From Item WHERE Area_id IN (...)
将两个查询放在一起:
SELECT * From Item WHERE Area_id IN (SELECT Area_id FROM Item i WHERE ...)
完成了!
请注意,子查询对性能没有好处,所以我建议您在数据库增长时进行基准测试并密切关注此查询,然后在遇到性能问题时对其进行优化。
尝试这个:
SELECT i2.*
FROM item i1, item i2
WHERE i1.id = :input_item_id
AND i1.area_id = i2.area_id
这就是所谓的“自联接”,应该比使用子查询的解决方案更有效。