C#datagridview具有多个表连接查询

时间:2012-05-23 22:10:43

标签: c# mysql

我有一个关于如何在使用带有mySql数据源的JOIN查询时将数据绑定到C#中的datagridview的问题,我从第一个表返回一个唯一记录,从第二个表返回0-2个记录。我的查询如下:

SELECT t1.*, t2.org_id, t2.org_name 
FROM test.tbl_user_accounts AS t1 
INNER JOIN test.tbl_organizations AS t2 
ON t1.affiliation_one = t2.org_id OR t1.affiliation_two = t2.org_id;

这是一个学校联合会,用户可以与最多两所学校联系。我希望学校在单独的单元格中显示,因此GROUP_CONCAT不是一个好的选择,如果我在t1.user_id字段上使用GROUP BY,那么我将失去第二个联盟。如果我没有分组,我最终会为同一个用户分两行。

我对联接并不熟悉,所以有可能不同类型的联接可以解决这个问题吗?

我正在使用带有mySql数据源的Visual C#2010。

1 个答案:

答案 0 :(得分:0)

这是我用来解决这个问题的查询(我想我发现它实际上是在另一个堆栈帖子中)。

SELECT test.tbl_user_accounts.*, t2.org_name as affil_one, t3.org_name as affil_two,t4.rank_name as rank_name
FROM test.tbl_user_accounts 
LEFT JOIN (test.tbl_organizations as t2) ON (t2.org_id = test.tbl_user_accounts.affiliation_one)
LEFT JOIN (test.tbl_organizations as t3) ON (t3.org_id = test.tbl_user_accounts.affiliation_two)
LEFT JOIN (test.tbl_ranks as t4) ON (t4.id_rank = test.tbl_user_accounts.user_rank);