sql - SQL 存储过程多维查询
问题描述
我有两个数据库表 LandGradingData 和 LandGradingImages。LandGradingData 有一个唯一的 id 列(称为 id),LandGradingImages 有一个称为landGradingID 的列,它引用 LandGradingData 的 id 列
土地分级数据
+----+----------+----------+
| id | column a | column b |
+----+----------+----------+
| | | |
+----+----------+----------+
| | | |
+----+----------+----------+
| | | |
+----+----------+----------+
土地分级图像
+-----------------------+------------+---------------+
| LandingGradingImageID | ImageBytes | landGradingID |
+-----------------------+------------+---------------+
| | | |
+-----------------------+------------+---------------+
| | | |
+-----------------------+------------+---------------+
| | | |
+-----------------------+------------+---------------+
我创建了一个从 LandGradingData 获取数据的存储过程,现在我想在 LandGradingImages 中添加 landGradingID = id
这就是我卡住的地方,因为 LandGradingImages 将返回landGradingID = id 的多行,从 LandGradingData 返回所有数据以及 LandGradingImages 相关行的最佳方法是什么
这是我到目前为止得到的
ALTER PROCEDURE [dbo].[LandGradingProcedure]
-- Add the parameters for the stored procedure here
@communityDesc varchar(255) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT id, columnA, columnB From LandGradingData
END
我将在 ASP.NET MVC 中调用这个存储过程,而我的 .NET 需要一个数组
public List<Reports> LandGradingReport(string community)
{
List<Reports> landGrading = new List<Reports>();
try
{
using (connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("LandGradingProcedure", connection))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter1 = new SqlParameter("@communityDesc", SqlDbType.VarChar);
parameter1.Value = community;
parameter1.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter1);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Reports item = new Reports();
item.id = reader.GetValue(0);
item.columnA = reader.GetValue(1).ToString().Trim();
item.columnB = reader.GetValue(2).ToString().Trim();
item.images = reader.GetValue(3).ToString().ToArray();
landGrading.Add(item);
}
}
}
}
return landGrading;
}
finally
{
connection.Close();
}
}
这是我的课:
public class Reports
{
public int id { get; set; }
public string columnA { get; set; }
public string columnB { get; set: }
public char[] images { get; set; }
}
任何帮助或建议将不胜感激。
解决方案
这不起作用吗?
SELECT a.ID, a.ColumnA, a.ColumnB, b.LandingGradingImageID, b.ImageBytes
FROM LandGradingData a
INNER JOIN LandGradingImages b
on a.id = b.landGradingID
推荐阅读
- node.js - 无法使用 npm-postgres 发布 postgres 客户端
- django - Django admin,如何只触发一次功能?
- sql-server - 在单个事务中对不同连接进行并行查询
- sql-server - 模式匹配查询的性能调优
- python - 在python中删除纯文本以外的任何内容
- swift - CAGradient 图层上的模糊视图为灰色
- slack - 如何通过 Slack 获取用户的母语?
- google-cloud-platform - GCP 云函数 - 内存消耗
- bash - ImageMagick:如何从蒙版的每个区域获取像素?
- excel - 使用字符串变量作为单元格引用