2013-07-24 89 views
0

我已經follwing DBTABLE一個ROW_NUMBER:採取刪除查詢與WHERE條件

enter image description here

在這個數據庫中存在存儲在bith英語和西班牙語語言問題。

For Language = 1 is English and 2 is spanish translation of the same question。

我在GridView中只顯示一個英語問題特定kiskid

爲了顯示我用下面的查詢中的GridView數據:

選擇ROW_NUMBER()OVER(ORDER BY QMID)AS SrNo,問題,從QuestionMaster kioskid 其中Language = 1和kioskID = 'K1'

此查詢給我下面的數據:

enter image description here

現在我想從上面的網格中的數據刪除查詢,這樣當我刪除「我可以進來嗎?」即SrNo = 1,那麼它的相關西班牙文也應該被刪除。

因爲我已經採取ROW_NUMBER srno產生的,(它不是在DB)的創建我一個問題,刪除了下相當於西班牙的記錄這個問題。

我嘗試使用row_number在刪除查詢的地方,但它沒有給我結果。

請幫幫我。

+0

@TimSchmelter它在第一張圖片(實際的數據庫捕捉)中提到的例如。對於我可以進來,,,它只是做entrar ,,對於兩個記錄QMID是相同的 –

+0

你是如何試圖刪除記錄,參數是什麼?你想刪除'SrNo','QMID'或'Question'或其組合嗎? –

+0

直接參數,我可以得到的是SrNo,問題和Kioskid ,,,但srno是沒有用的,因爲它沒有在DB中的實際記錄,,問題和kioskid可以得到重複@TimSchmelter –

回答

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兩者(?全部)記錄,然後刪除where的語言條件delete

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

由此只有西班牙語記錄被刪除,我想刪除英語記錄也 –

+0

我添加和子語言中的語言= 2(從QuestionMaster選擇QMID ....),但它不工作 –

0

你就不能從數據庫中檢索QMID並使用一個刪除所有語言的問題?

+0

我猜想這兩個有點。從我所看到的他每個問題都有一個ID(QMID),所以我想知道爲什麼他不會用它來刪除他的問題。 – FreddieH

0

爲什麼你需要使用ROW_NUMBER? Select * from QuestionMaster where Language = 1不會做同樣的工作。

如同delete from QuestionMaster where QMID = 1

+0

我不想在網格中顯示QMID ,只是我被告知顯示serialnumber到每個顯示的問題ROW_Number –

+0

所以不顯示它?您可以隱藏網格中的列。 – bhs

+1

我也不太確定這個要求。故意濫用關係數據不是好設計。 – Romoku

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 
+0

Thanx,但是,如果我被允許在查詢(gridview)中輸入QMID,工作本來是很容易。我不能這樣做。 –

+0

因此,回到誰告訴你,你不能和解釋他們的方式錯誤。也許比這更有外交。出於興趣背後的原因是什麼? – bhs

+0

@bhs該死的規則 –