为了账号安全,请及时绑定邮箱和手机立即绑定

如何在sql中选择3条外键记录

如何在sql中选择3条外键记录

PHP
翻阅古今 2022-12-23 15:51:02
我很抱歉我的英语不好。我有一个项目注册表:比如Type of service | Total Amount | prepayment | last payment  | Cost of tolls    web design   |      1000    |  1 (F-key) |  2 (F-key)    |   3 (F-key)付款状态和金额的第二个表  id   |  amount  |   Payment status  |    Description  1    |   400    |        yes        |   for prepayment    2    |   600    |        no         |   for last payment   3    |    0     |        no         |   for Cost of tolls 现在我的问题是:如何连接两个表并取出所有三列?我已经用这段代码取出了预付款栏SELECT mzmx_request.service, mzmx_request.amount,(mzmx_payment.payment) as prepayment,(mzmx_payment.status) as prepayment_status FROM mzmx_requestJOIN mzmx_payment ON mzmx_request.prepayment = mzmx_payment.id如何再添加两列?JOIN mzmx_payment ON mzmx_request.payment = mzmx_payment.idJOIN mzmx_payment ON mzmx_request.pay_more = mzmx_payment.id
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

只需加入三次即可。你已经做过一次了。例如:


SELECT

  r.service, 

  r.amount,

  pp.payment as prepayment,

  pp.status as prepayment_status,

  lp.payment as last_payment,

  lp.status as last_payment_status,

  ct.payment as cost_of_tolls,

  ct.status as cost_of_tolls_status 

FROM mzmx_request r

left JOIN mzmx_payment pp ON r.prepayment = pp.id

left JOIN mzmx_payment lp ON r.lastpayment = lp.id

left JOIN mzmx_payment ct ON r.costoftolls = ct.id

由于您要针对同一张表加入三次,因此您需要为该表添加别名。在这种情况下,我使用别名pp、lp和ct分别表示预付款、最后付款和通行费。


查看完整回答
反对 回复 2022-12-23
?
喵喔喔

TA贡献1735条经验 获得超5个赞

3 个引用字段是独立的 - 因此它们需要独立的引用表副本:


SELECT *

FROM main

JOIN slave AS slave1 ON main.prepayment    = slave1.id

JOIN slave AS slave2 ON main.last_payment  = slave2.id

JOIN slave AS slave3 ON main.cost_of_tolls = slave3.id


查看完整回答
反对 回复 2022-12-23
  • 2 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信