我有一个关于如何在使用带有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。
答案 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);