从不同的表中检索数据

我想从如下两个表中检索数据。我有一个Products表,其中有P_id,P_name列和一个BATCH表,p_id_fk作为表的外键Products。


这是我的查询;我想从Product表中的产品名称中检索,因为我已将Products表主键存储为表中的外键Batch。


SqlDataAdapter sda = new SqlDataAdapter("Select batch_id, quantity, left_qty, purchaseDate, manufacturing_date, expiryDate from batch where Convert(DATE, expiryDate, 103) BETWEEN @from AND @to", con);


sda.SelectCommand.Parameters.AddWithValue("@from", Convert.ToDateTime(datePicker1.SelectedDate.Value).ToString("yyyyMMdd"));

sda.SelectCommand.Parameters.AddWithValue("@to", Convert.ToDateTime(datePicker2.SelectedDate.Value).ToString("yyyyMMdd"));



森栏
浏览 173回答 3
3回答

慕哥6287543

如果要从两个表中检索数据,则需要使用 SQL JOIN我不确定您的表格的确切组成,但类似于以下内容Select batch_id,product_name,quantity,left_qty,purchaseDate,manufacturing_date,expiryDatefrom batch BINNER JOIN Products PON P.P_id = B.P_idwhere Convert(DATE,expiryDate,103) BETWEEN @from AND @to

犯罪嫌疑人X

不确定我是否正确理解了您的问题,但我相信对于您的查询,您正在寻找一些简单的东西,例如 JOIN between Productsand Batchtables:SELECT    P.P_id,    P.P_name,    B.batch_id,    B.product_name,    B.quantity,    B.left_qty,    B.purchaseDate,    B.manufacturing_date,    B.expiryDateFROM Batch AS BINNER JOIN Products AS PON B.p_id_fk = P.P_idWHERE CONVERT(DATE, B.expiryDate, 103) BETWEEN @from AND @top_id_fk您提供的名称可能不是Batch表中的实际列名,而是外键约束本身的名称,如命名约定(_fk后缀)所示。

偶然的你

您需要在此处加入或交叉申请。选项 1 - 内连接:    Select             b.batch_id,pd.product_name,quantity,left_qty,    purchaseDate,manufacturing_date,expiryDate from batch b     inner join product pd on pd.p_id = b.p_id  where Convert(DATE,expiryDate,103)     BETWEEN @from AND @to选项 2 交叉应用:    Select             b.batch_id,pd.product_name,quantity,left_qty,    purchaseDate,manufacturing_date,expiryDate from batch b     cross apply    (     select product_name from product p     where p.p_id = b.p_id    ) pd    where Convert(DATE,expiryDate,103)     BETWEEN @from AND @to有关交叉申请的更多信息,请看这里。
打开App,查看更多内容
随时随地看视频慕课网APP