0

私は次のDBTableを持っています:

ここに画像の説明を入力

このデータベースには、英語とスペイン語の両方で保存された質問があります。

Language=1 は英語、2 は同じ質問のスペイン語翻訳です。

特定のkiskidのグリッドビューに英語の質問のみを表示しています

gridview にデータを表示するには、次のクエリを使用しています。

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

このクエリにより、次のデータが得られます。

ここに画像の説明を入力

今、私は上のグリッドのデータから削除クエリを作成したかったので、削除すると「入ってもいいですか?」つまり、SrNo=1 の場合、関連するスペイン語も削除する必要があります。

row_number を取得して srno を生成したため (DB にはありません)、その質問に相当する次のスペイン語レコードを削除するという問題が発生します。

削除クエリの where で 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 に基づいて両方 (すべて?) のレコードを削除する場合は、whereforの言語条件を削除し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

なぜ ROW_NUMBER を使用する必要があるのですか? Select * from QuestionMaster where Language = 1同じ仕事はしません。

ようにdelete from QuestionMaster where QMID = 1

于 2013-07-24T11:11:13.183 に答える
0

データベースから QMID を取得し、その QMID を使用してすべての言語の質問を削除することはできませんか?

于 2013-07-24T11:07:06.393 に答える