0

我有以下 DBTable:

在此处输入图像描述

在这个数据库中有以英语和西班牙语存储的问题。

对于 Language=1 是英语,2 是同一问题的西班牙语翻译。

我在 gridview 中只显示一个针对特定 kiskid 的英语问题

要在 gridview 中显示数据,我使用以下查询:

选择 ROW_NUMBER() OVER (ORDER BY QMID) AS SrNo,question,kioskid 从 QuestionMaster where Language=1 and KioskID='K1'

这个查询给了我以下数据:

在此处输入图像描述

现在我想从上面网格中的数据中进行删除查询,这样当我删除“我可以进来吗?” 即 SrNo=1 那么它的相关西班牙语也应该被删除。

由于我通过获取 row_number 生成了 srno ,(它不在数据库中)它给我带来了一个问题,即删除该问题的下一个等效西班牙记录。

我尝试在删除查询的位置使用 row_number,但它没有给我结果。

请帮我。

4

4 回答 4

2

为什么这不起作用?

delete from QuestionMaster
    where Language = 2 and KioskID = 'K1' and QMID = 1;

如果是因为你没有QMID,你可以这样做:

delete from QuestionMaster
    where Language = 2 and KioskID = 'K1' and
          QMID in (select QMID
                   from QuestionMaster
                   where Language = 1 and question = 'May I come In'
                  )

我不确定row_number()它在做什么。

编辑:

如果要根据 QMID 删除两个(全部?)记录,请删除 for 中的语言where条件delete

delete from QuestionMaster
    where KioskID = 'K1' and
          QMID in (select QMID
                   from QuestionMaster
                   where Language = 1 and question = 'May I come In'
                  )
于 2013-07-24T11:07:38.890 回答
0

你应该可以QMID在你的查询中:

select
     ROW_NUMBER() OVER (ORDER BY QMID) AS SrNo
    ,QMID
    ,question
    ,kioskid
from QuestionMaster
where Language=1 and KioskID='K1'

然后在 C#/VB 中创建一个绑定对象

public class Question
{
    [DisplayName("Serial Number")]
    public int SrNo { get; set; }

    [Browsable(false)]
    public int QMID { get; set; }

    public string Question { get; set; }

    public int KioskId { get; set; }
}

BrowsableAttribute将指示该列不应显示在您的 DataGridView 中。

这样你的删除就更容易了。

delete from QuestionMaster where QMID = @QMID
于 2013-07-24T11:24:53.643 回答
0

您不能只从数据库中检索 QMID 并使用该 QMID 删除所有语言的问题吗?

于 2013-07-24T11:07:06.393 回答
0

为什么需要使用 ROW_NUMBER ?不会Select * from QuestionMaster where Language = 1做同样的工作。

delete from QuestionMaster where QMID = 1怎样?

于 2013-07-24T11:11:13.183 回答