php - Mysql foreach with 条件依赖于其他表记录

标签 php mysql for-loop foreach

我有 2 张 table 。

t1t2

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. $xt2 的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/

相关文章:

php - 需要 wp-load.php 3 个目录

php - 不同的排名逻辑

c++ - 在通用 C++ 代码中移动基于范围的循环?

php - php for循环可以在mysql查询中使用来插入数据吗?

替换数据框列表中的列值

php - 警告 : mysqli_connect(): (28000/1045): on Cpanel

PHP、mysql 和两个数据库 - 使用不同的架构从第一个数据库中的表更新第二个数据库表中的某些行

php - 使用 PostgreSQL 的 gnupg 扩展解密时遇到问题

php - 使用php和sql session 的在线测验系统

php - 插入的最后一行首先显示