基于第二个表在表中查找属于一起的属性的有效方法

时间:2013-10-23 09:01:41

标签: sql join informix

我有两张桌子:

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感觉不对。

1 个答案:

答案 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,但最好的解决方案应该是沿着这些方向或至少接近它们。 感谢