spLinker能否找到fkey表中的fkey?
发布于:2022-01-17 09:50:54
#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