0

mySql データソースで JOIN クエリを使用するときに、C# でデータを datagridview にバインドする方法について質問があり、最初のテーブルから 1 つの一意のレコードを返し、2 番目のテーブルから 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;

これは、ユーザーを最大 2 つの学校に関連付けることができる学校の関連付けです。学校を別々のセルに表示したいので、GROUP_CONCAT は実際には適切なオプションではありません。t1.user_id フィールドで GROUP BY を使用すると、2 番目の所属が失われます。グループ化しないと、同じユーザーに対して 2 つの行ができてしまいます。

私は結合にあまり詳しくないので、別のタイプの結合でこれが解決する可能性はありますか?

私は、mySql データソースで Visual C# 2010 を使用しています。

4

1 に答える 1

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);
于 2012-06-22T18:01:41.903 に答える