spLinker能否找到fkey表中的fkey?

#1 cody

如A表有'fkey' => 'olt_id',而'olt_id'所在表B表有'fkey' => 'obd_id',
'obd_id'所在表为C表.
能否用spLinker,找到两层的fkey, 显示C表的内容?类似这样的结构
 
[1] => Array
        (
            [onu_id] => 2//A表内容
            [obd] => Array
                (
                    [obd_id] => 48//B表内容
                            [obd] => Array
                                    (
                                             [obd_id] => 48//C表内容
                                             [obd_name] => xxxxx
                                   )
                  )
                )
            )

2010-12-11 11:52:29

#2 jake

spLinker仅是表对表关联,没有表对表再对表的关联。

另外,如果是那么复杂的查找,建议还是直接用findSql来执行SQL查找,那会更有效率得多。

2010-12-11 19:52:50

#3 cody

我只会简单的SQL语句,如果要实现上面的功能要怎样写SQL呢?可以举个例子吗?我想实现LIKE &...&查找出来fkey列,用fey所在表的某一个字段替换.
 
Array
(
    [0] => Array
        (
            [onu_id] => 16
            [onu_name] => XXXXXXXXXXX
            [onu_type_id] => 8        //这个是外键,我想用它所在表type的type_name替换
            [onu_ip] => 11.11.11.11
            [cvlan] => 1001-1024
            [v_vlan] => 103
            [v_ip] => 10.44.103.126
            [ss_id] => 2277
            [onu_obd_id] => 93
             //这个是外键,我想用它所在表obd的obd_name替换,在obd表中有一个obd_olt_id,我想用olt表的olt_name替换它,也显示在查找记录里面.
            [obd_port] => 1
         )

)

2010-12-12 16:01:10

#4 cody

我上网找到怎样写SQL了,哈哈哈~~!:lol
 
$sql = "SELECT `onu` . * , `type`.`type` ,`obd` . `obd_name` ,`olt` . `olt_name`
    FROM onu, type , obd ,olt
    WHERE (
     (
     `onu`.`onu_name` LIKE '%".$onu_name ."%'
     )
    AND (
     `type`.`type_id` = `onu`.`onu_type_id`
     )
    AND (
     `obd`.`obd_id` = `onu`.`onu_obd_id`
     )
    AND (
     `olt`.`olt_id` = `obd`.`obd_olt_id`
     )
    )";

2010-12-12 18:09:56

#5 jake

我上网找到怎样写SQL了,哈哈哈~~!
cody 发表于 2010-12-12 18:09
嗯,你的方法不错,可以实现你需要的效果。

另外,从数据库查询效率上来说,建议你使用“子查询”来实现,子查询比你上面的SQL会更有效率一些。:loveliness:

2010-12-12 20:15:25