因此,我在一个名为“ MyDB”的MySQL数据库中有3个不同的表,其中的表是table1,table2,table3。这是我的代码,用于查询数据库中的3个表,但是它一直在中断,我不知道为什么。为Google Maps Javascript API v3创建此代码。
private static IEnumerable<HeatMapDataElement> QueryHeatMapDataFromDatabase(string reqDate, string reportType)
{
const string connectionString = "connection_credentials";
var ds = new DataSet();
var elements = new List<HeatMapDataElement>();
var conn = new MySqlConnection(connectionString);
MySqlCommand cmd;
var da = new MySqlDataAdapter();
conn.Open();
try
{
cmd = conn.CreateCommand();
cmd.CommandTimeout = 30;
cmd.CommandText =
"select RequestHour, longitude, latitude, count(requesttime) as Weight from MyDB.table1 || MyDB.table2 || MyDB.table3 where method=@ReportType and requestdate = date(@RequestDate) and longitude is not null and latitude is not null and requesthour is not null group by RequestHour, longitude, latitude";
cmd.Parameters.AddWithValue("@ReportType", reportType);
cmd.Parameters.AddWithValue("@RequestDate", reqDate);
da.SelectCommand = cmd;
da.Fill(ds);
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
elements.AddRange(from DataRow dr in ds.Tables[0].Rows
select new HeatMapDataElement()
{
Latitude = Double.Parse(dr["latitude"].ToString()), Longitude = Double.Parse(dr["longitude"].ToString()), Hour = int.Parse(dr["RequestHour"].ToString()), Weight = int.Parse(dr["Weight"].ToString())
});
}
}
catch (Exception ex)
{
throw ex; //breaks here <-------
}
finally
{
conn.Close();
da = null;
cmd = null;
}
return elements.AsEnumerable();
}
错误是:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在'||附近使用正确的语法。 MyDB.table2,其中方法='表2'和requestdate ='在第1行
最佳答案
您正在混合使用C#代码和SQL代码。 AFAIK管道运算符只能在mysql中用于连接列而不是表,即使这样,默认情况下它也处于禁用状态,因此我认为您需要使用INNER JOIN
如果您正在从3个表中读取数据,则可以在3个表之间进行内部联接,如下所示:
select * from table1 inner join table2 on table1.key = table2.key