2012-05-23 103 views
0

我有一个问题,如何将数据绑定到C#中的datagridview时,与mySql数据源一起使用JOIN查询时,我从第一个表和0-2记录返回一个唯一记录第二张桌子。我的查询如下:C#datagridview与多个表连接查询

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; 

这是一所学校ASSOCATION,其中用户最多可与两所学校有关。我希望学校能够在不同的单元格中显示,因此GROUP_CONCAT并不是一个好选择,如果我在t1.user_id字段上使用GROUP BY,则会失去第二个联系。如果我不分组,我最终会为同一个用户创建两行。

我不是所有人都熟悉连接,所以有可能不同类型的连接可以解决这个问题?

我正在使用Visual C#2010和mySql数据源。

+0

可以告诉你结果的一个例子,你正在使用,使querys –

回答

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);