根据关系表值从另一个表中选择

Posted

技术标签:

【中文标题】根据关系表值从另一个表中选择【英文标题】:Selecting from another table based on relation tables value 【发布时间】:2016-12-05 19:04:56 【问题描述】:

我在 mysql 中有三个表:

1) 银行账户

- accounts_id (PRIMARY)
- accounts_account_number (UNIQUE)

2) bank_accounts_customers

- accounts_customers_id (PRIMARY)
- accounts_customers_account_id (INDEX)
- accounts_customers_customer_id (INDEX)

3) bank_customers

- customers_id (PRIMARY)
- customers_customer_number (UNIQUE)
- customers_title
- customers_first_name
- customers_middle_name
- customers_last_name

我需要获取存储在 bank_accounts 表中的帐号和存储在 bank_customer 表中的客户编号。 bank_accounts_customers 表存储了客户和他们拥有的帐户之间的链接,因此多个客户可以共享一个帐户。数据库中的所有表都被索引并使用外键链接它们。

我不确定 INNER JOINJOIN 是否可行以及如何执行此操作?

我附上了数据库的图像(不是 100% 完成的)。 https://s32.postimg.org/ia56fgjth/Screen_Shot_2016_07_31_at_5_51_38_pm.png

我尝试过的查询是:

SELECT `bank_accounts`.`accounts_account_number`, `bank_customers`.`customers_customer_number`
FROM `bank_accounts`, `bank_customers`
INNER JOIN `bank_accounts_customers`
ON bank_accounts_customers`.`accounts_customers_account_id` = `bank_accounts`.`accounts_id`

【问题讨论】:

如果可能,显示查询。如果您遇到任何问题,我们随时为您提供帮助。 所以加入听起来是对的......你试过什么?还是 0 努力,只是问问? 抱歉,@FirstOne 我只是不确定如何在这个项目中使用它们。 @BradTurner 使用问题下方的编辑链接。 cmets 部分中发布的代码不可读。然后你可以删除你最后的 2 个 cmets。 编辑您的问题并将您的查询添加到其中,使其格式正确 【参考方案1】:

试试这个

SELECT ba.accounts_account_number, bc.customers_customer_number 
FROM bank_accounts_customers bac
INNER JOIN bank_accounts ba on bac.accounts_customers_account_id = ba.accounts_id
INNER JOIN bank_customers bc on bac.accounts_customers_customer_id = bc.customers_id

【讨论】:

【参考方案2】:
SELECT ba.accounts_account_number, bc.customers_customer_number 
FROM bank_accounts AS ba

INNER JOIN bank_accounts_customers AS bac
 ON bac.accounts_customers_account_id = ba.accounts_id

INNER JOIN bank_customers AS bc
 ON bc.customers_id = bac.accounts_customers_customer_id 

应该得到你想要的。

【讨论】:

【参考方案3】:
select 
ba.accounts_account_number, 
bc.customers_title,bc.customers_first_name, bc.customers_middle_name, bc.customers_last_name 
from bank_accounts ba inner join bank_accounts_customers bac 
on ba.accounts_id = bac.accounts_customers_account_id 
inner join bank_customers bc 
on bac.accounts_customers_customer_id = bc.customers_id

试试这个..!!

【讨论】:

感谢@Vinit Prajapati!

以上是关于根据关系表值从另一个表中选择的主要内容,如果未能解决你的问题,请参考以下文章

从另一个表中选择列中的相似值并在主表中使用另一个表值

如何使用第一个表中的逗号分隔值从另一个表中选择行? [复制]

使用外键关系更新从另一个表中选择的电子邮件

jquery根据选择值从表中填充文本输入

如何使用组合框根据另一个组合框的值从不同的表中选择数据

如何根据从另一个表中选择的结果更新一个表中的列