1

我有以下五个表:

表名:字段

dba_acc:           account_id,用户名
user_inst:         account_id,instance_name,host_name
实例:        instance_key,instance_name
db_inst:            db_key,instance_key
dbs:                  db,db_key

所有的表都是相互连接的。

我想开发一个查询来显示特定用户的 account_id、username、instance_name、host_name 和 db。

例如,如果我选择 username = 'Joe' 那么它应该显示 'Joe' 的 account_id、与 'Joe' 相关的 instance_name 和 host_name,以及与每个 instance_name 相关的 db。

instance_name 和 host_name 之间的关系是多对多的。

太复杂了。我被困住了!任何帮助表示赞赏。

4

2 回答 2

1

尝试这个 ::

Select dba_acc.account_id, dba_acc.username, user_inst.instance_name ,
user_inst.host_name, instances.instance_key, dbs.db
from 
dba_acc
inner join   user_inston on (dba_acc.account_id =user_inston.account_id)
inner join instances on (instances.instance_name = user_inst.instance_name)
inner join db_inst on (db_inst.instance_key = instances.instance_key)
inner join dbs on (dbs.db_key = db_inst.db_key)
于 2012-06-28T16:16:26.050 回答
1
select * from
dba_acc a
join user_inst u on a.account_id u.account_id
join instances i on u.instance_name = i.instance_name
join db_inst db on i.instanec_key = db.instance_key
join dbs on db.db_key = dbs.db_key

就像接线一样。按名称查找常用列并继续加入。

于 2012-06-28T16:17:19.093 回答