我有 2 张 table 。
t1
和 t2
。
t1
正在存储 map 信息。
t2
正在为 t1
存储一些额外信息
t1
表格如下:
+--------+-----------+-----------+------------+-----------+
| ID | maptitle | item1 | item2 |item.$x |
+--------+-----------+-----------+------------+-----------+
| 1 | Amap | 1000 | 2000 |x |
| 2 | Bmap | 2000 | 3000 |x |
| 3 | Cmap | 3000 | 4000 |x |
+---------------------------------------------------------+
itemx
取决于 t2
中有多少行
t2
表如下:
+----------+----------------+
| ID | title |
+----------+----------------+
| 1 | extra1 |
| 2 | extra2 |
| x | x |
+---------------------------+
首先,我的脚本当我插入
新数据到t2
时,t1
将添加item.$x
. $x
是t2
的ID。但是当我查询
数据和我的编码时遇到一个问题,如下所示:
$mapslist = DB::fetch_all("SELECT * FROM ".DB::table('t1')." ORDER BY id ASC");
foreach($mapslist as $mn => $ml){
$mapslista[] = $ml;
}
我的 html 输出编码:
<!--{loop $mapslista $mn $ml}--> //This is looping in my html
<div>{$ml[id]} , {$ml[maptitle]} {$ml[item.$x]}</div>
<!--{/loop}--> //Looping END
//below is what I guess
<!--{loop $mapslista $mn $ml}--> //This is looping in my html
<div>{$ml[id]} , {$ml[maptitle]} , <!--{loop again}-->{$ml[item]}, {$ml[item2]} {$ml[item3]} <--{/loop}--></div> //the $ml[item.$x], the $x is depend on how many row in t2
<!--{/loop}--> //Looping END
最终输出如下(html):
1 , Amap
2 , Bmap
3 , Cmap
我的问题是,如果我的 t2
仅获得 ID 1
,那么 t1
仅显示 item1
数据?如果我的 t2
获得 10 行数据
,则 t1
仅显示 item1
直到 item10
> 数据?
以下是我的期望:(例如,如果 t2
只有 1 行,我的 t1.item
也应该有 item1
)
1 , Amap , 1000
2 , Bmap , 2000
3 , Cmap , 3000
例如,如果 t2
有 2 行,那么我的 t1.item
也应该有 item1
item2
列。所以最终的输出应该是
1, Amap , 1000 , 2000
2, Bmap , 2000 , 3000
3, Cmap , 3000 , 4000
谢谢。
最佳答案
不确定我是否很好地理解了这个问题,但是您不需要简单地连接表吗?
$mapslist = DB::fetch_all("SELECT * FROM ".DB::table('t1')." AS t1 LEFT JOIN ".DB::table('t2')." AS t2 ON t2.id = t1.item.$x ORDER BY t1.id ASC");
foreach($mapslist as $mn => $ml){
$mapslista[] = $ml;
}
关于php - Mysql foreach with 条件依赖于其他表记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39081492/