我有两张桌子:
person
----------
id name
1 peter
2 paul
3 mary
4 george
5 andy
和
living
-------
id key
1 1
2 1
3 2
4 2
5 2
如果我知道名称,那么找到属于 person 的所有ID的最有效查询是什么?让我们说我想知道:“玛丽和谁一起生活”?在 person 中,Mary的id是3.我检查生活以获取属于Mary的密钥,即2.现在我可以检索 living <中的所有ID / em>与密钥2一起使用,我有与Mary一起生活的ID。
这是我到目前为止所得到的:
SELECT p2.name
FROM person p1
JOIN living l1
ON p1.id = l1.id
JOIN living l2
ON l1.key = l2.key
JOIN person p2
ON l2.id = p2.id
WHERE p1.name = 'mary'
有更好的方法吗?结果似乎很好,但是执行三个JOINS
感觉不对。
答案 0 :(得分:0)
你可以做的是:
DEFINE name CHAR(15);
LET name = 'mary'
define keyValue char(10);
select l.key into keyValue from person p left outer join living l on p.id= l.id and p.name= name
select p.*, l.* from person p left outer join living l on p.id=l.id
where key= keyValue
我之前从未使用过Informix,但最好的解决方案应该是沿着这些方向或至少接近它们。 感谢