求一个算法,动态的拼sql中的join表
有一个List<String>,每个元素是一个表名(可以保证没有重复值)
我想根据List的个数(count),动态的拼sql 语句中的from部分,
例如:
(其中A,B,C。。。就是List中的表名,id是一个固定的字段名,保证每个表都存在这个域)
-----------------------
count=1
↓↓↓
from A
-----------------------
count=2
↓↓↓
from A left join B on A.id = B.id
-----------------------
count=3
↓↓↓
from (A left join B on A.id = B.id) left join C on B.id = C.id
------------------------
count=4
↓↓↓
from ((A left join B on A.id = B.id) left join C on B.id = C.id) left join on D on C.id=D.id
count=5
.....
------解决方案--------------------直接left join就行拉 那个括号是没作用的,放进去干嘛??
ABC 可以用ASCII码得到,那问题就解决了。
------解决方案--------------------[Code=C#]
           List<string> list = new List<string>();
           list.Add("table1");
           list.Add("table2");
           list.Add("table3");
           list.Add("table4");
           list.Add("table5");
           list.Add("table6");
           StringBuilder sbQuery = new StringBuilder();
           for (int i = 0; i < list.Count - 1; i++)
           {
               if (i == 0)
               {
                   sbQuery.Append(string.Format(" from {0} left join {1} on {0}.id = {1}.id", list[i], list[i+1]));
               }
               else
               {
                   sbQuery.Append(string.Format(" left join {1} on {0}.id = {1}.id", list[i], list[i+1]));
               }
           }
           Console.Write(sbQuery.ToString());
[/Code=C#]