gpt4 book ai didi

php - SQL 表连接

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:57 26 4
gpt4 key购买 nike

我如何在 SQL 中输入我得到这 2 个表,表 a 和表 b。

table a: 

+----+-------+--------+--------+
| id | name | data1 | data2 |
+----+-------+--------+--------+


table b: 

+----+------------+-------+--------+--------+
| id | member_id | a_id | data1 | data2 |
+----+------------+-------+--------+--------+

所以我想从表 a 中获取所有值。我还想从表 b 中获取数据 2 和 value = true,其中 a.id = b.a_id.如果表 a 中的数据没有表 b 中的值,其中 a.id = b.a_id, data2 = 0, value = false。

如果这一切都可以使用 SQL 发生,那就太好了,但如果不能,至少告诉您将如何使用 PHP 或 codeigniter 解决问题,或者只是发布您的概念/算法。提前谢谢你。

编辑2:

好的,我知道了。感谢下面所有分享他们想法的人。他们帮了很多忙:

型号:

    function getData2(){
$id = $this->uri->segment(3);
$this->db->select("t.*, mt.mid as mid, mt.amt as mtamt");
$this->db->from("transaction as t");
$this->db->join("mtrans as mt", "mt.tid = t.id and mt.mid = '$id'", "left outer");
$query = $this->db->get();
$data['info2'] = $query->result_array();

return $data;
}

查看:

<?php foreach ($info2["info2"] as $record) { ?>
<tr>
<td><?php echo $record["id"]; ?></td>
<td><?php echo $record["name"]; ?></td>
<td><?php echo $record["type"]; ?></td>
<td><?php echo $record["amt"]; ?></td>
<?php foreach ($info1["info1"] as $stat) {
if($record["mid"] == $this->uri->segment(3)){?>
<td><?php echo $stat["mtamt"]; ?></td>
<td><?php echo $stat["user"]; ?></td>
<td><?php
if(!$stat["mtamt"]){
echo "Unpaid";
}
if($stat["mtamt"] < $record["amt"]){
echo "Partial";
}
if($stat["mtamt"] == $record["amt"]){
echo "Paid";
}
?></td>

<?php } } ?>
</tr>
<?php } ?>

最佳答案

尝试类似的东西

select
a.*,
IFNULL(b.data2, 0) as b_data2,
IF(b.data2 IS NULL, false, true) as value
from a left outer join b
on a.id = b.a_id

它根据键连接两个表并检索相关记录。

已更新以允许空值。 IFNULL 检查一个值是否为 null,如果不是,则返回值,否则返回第二个参数,在本例中为 false

IF 函数的工作方式类似于 if 代码语句,如果相等则返回第一个参数,否则返回第二个参数。

我假设 b.data2 可以为空,如果没有详细的表结构,一切都是猜测。

关于php - SQL 表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22195769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com