gpt4 book ai didi

mysql - SQL 连接第三个表

转载 作者:行者123 更新时间:2023-11-29 11:07:15 25 4
gpt4 key购买 nike

所以我有一个三表设置,如下所示......

表 1 - 收货项目

ri_id | ri_name | ri_reciept 
----------------------------
1 | nails | 1
2 | screws | 1
3 | hammer | 1

表 2 - 收据

r_id | r_name   | r_mop
-----------------------
1 | reciept1 | 1
2 | reciept2 | 2
3 | reciept3 | 2

表 3 - 付款方式

m_id | m_name
-------------
1 | Bank Transfer
2 | Cash
3 | Cheque

这是我尝试运行的 SQL 代码

SELECT * FROM reciept_items ri 
INNER JOIN reciepts r ON ri.ri_reciept = r.r_id
INNER JOIN method_of_payment mop ON r.r_mop = mop.m_id
WHERE ri_reciept = :id

更新:最后一个 WHERE 行的工作原理如下...

$queryRecieptItems = $dbh->prepare("
SELECT * FROM reciept_items ri
INNER JOIN reciepts r ON ri.ri_reciept = r.r_id
INNER JOIN method_of_payment mop ON r.r_mop = mop.m_id
WHERE ri.ri_reciept = :id
");
$queryRecieptItems->execute(array( "id"=>$reciept['r_id'] ));

我试图在循环表 1 时访问“m_name”列,您知道为什么上述方法不起作用吗?

最佳答案

您需要在带有表名的 where 子句中为 ri_reciept 列添加前缀(尽管它应该在没有前缀的情况下工作),并传递正确的 id 来代替“:id”,例如以下应该有效:

SELECT * 
FROM receipt_items ri
INNER JOIN receipts r ON ri.ri_receipt = r.r_id
INNER JOIN method_of_payment mop ON r.r_mop = mop.m_id
WHERE ri.ri_receipt = 1;

这是SQL Fiddle

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

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