2013-07-24 5 views
0

я follwing DBTable:взять row_number в запросе удаления с условием где

enter image description here

В этой базе есть вопрос хранится в битха английском и испанском языке.

Для языка = 1 английский и 2 - испанский перевод того же вопроса.

Я отображая только английский вопрос в GridView для конкретного kiskid

Для отображения данных в GridView Я использую следующий запрос:

выберите ROW_NUMBER() OVER (ORDER BY QMID) AS SrNo, вопрос, kioskid из QuestionMaster где Language = 1 и KioskID = 'К1'

Этот запрос дает мне следующие данные:

enter image description here

Теперь я хотел сделать запрос на удаление из данных в сетке таким образом, что когда я удалю «возможно, я приду?». т. е. SrNo = 1, то его соответствующий испанский также должен быть удален.

Как я сгенерировал srno, взяв row_number (его не в БД), он создал мне проблему для удаления следующей эквивалентной испанской записи на этот вопрос.

Я попытался использовать row_number в том, где запрос на удаление, но не дал мне результатов.

Пожалуйста, помогите мне.

+0

@TimSchmelter, упомянутый в первом изображении (фактическое оснащение БД), например. для я могу войти в ,,, его просто сделать entrar ,, для обеих записей QMID такой же –

+0

Как вы пытались удалить запись, какой параметр? Вы хотите удалить «SrNo», «QMID» или «Question» или комбинацию? –

+0

Прямой параметр, который я могу получить, это SrNo, Question And Kioskid ,,, но srno бесполезен, так как его фактическая запись в DB, ​​вопрос и киоскид могут повторяться @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() делает.

EDIT:

Если вы хотите удалить оба (? Все) записи, основанные на 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 в подзапрос (выберите QMID из QuestionMaster ....), но его не работает –

0

Не можете ли вы просто получить QMID из базы данных и использовать его для удаления вопроса на всех языках?

+0

Немного обоим, я думаю. Из того, что я вижу, у него есть идентификатор (QMID) для каждого вопроса, поэтому мне было интересно, почему он не просто использовал это, чтобы удалить свой вопрос. – FreddieH

0

Почему вы должны использовать ROW_NUMBER? Не будет Select * from QuestionMaster where Language = 1 сделать ту же работу.

Как delete from QuestionMaster where QMID = 1?

+0

Я не хочу отображать QMID в сетке , просто мне сказали отобразить серийный номер для каждого отображаемого вопроса 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, но, если бы мне было разрешено вводить QMID в запросе (gridview), работа была бы намного проще. Мне не разрешено это делать. –

+0

Итак, вернитесь к тому, кто сказал вам, что вы не можете и объясните ошибку своих путей. Может быть, быть более дипломатичным, чем это. Из интереса, в чем причина этого? – bhs

+0

@bhs проклятые правила –

Смежные вопросы