2012-05-06 16 views
7

Anket yapmak için bir masam var ve belirli bir sürprimle ilgili tüm kayıtları silmek istiyorum.İlgili tüm kayıtları birden fazla tablodan silin

Benim tablolar:

_______________  _______________  ___________ ________________ 
|_tblSurvey___|  |_tblAnswers___| |_tblAlt__| |_tblQuestions_| 
| surveyID |  | answerAltID | | altID | | questID  | 
| surveyName |  | userID  | | altText | | questText | 
|_____________|  |______________| |_questID_| |_surveyID_____| 

ı

surveyID 1. ilgili tüm kayıtları silmek istiyorum diyelim Denedim:

DELETE 
* 
FROM tblSurvey, tblQuestions, tblAlt, tblAnswers 
WHERE tblSurvey.surveyID = 1 
AND tblsurvey.surveyID = tblQuestions.surveyID 
AND tblQuestions.questID = tblAlt.questID 
AND tblAlt.altID = tblAnswers.answerAltID 
+0

kullanabilirsiniz 'tblQuestion' veya 'tblQuestions' adı verilen tablo var mı? –

+0

'tblQuestions'. Şimdi düzenlenmiş. – janlindso

cevap

7

İki yolları:

  • ile yabancı anahtar kısıtlamalarını ayarlayın.
  • Çoklu tablo DELETE ifadesini kullanın.

bu deneyin:

DELETE tblSurvey, tblQuestion, tblAlt, tblAnswers 
FROM tblSurvey 
JOIN tblQuestion ON tblsurvey.surveyID = tblQuestion.surveyID 
JOIN tblAlt ON tblQuestions.questID = tblAlt.questID 
JOIN tblAnswers ON tblAlt.altID = tblAnswers.answerAltID 
WHERE tblSurvey.surveyID = 1   
+2

Bu sorgu işe yaramıyor, bence şunu söylemeliyim: SİL * DAN… değil mi? ya da ben hatalıyım? – FidoBoy

2

senin tablolar yabancı anahtar referanslar varsa ON DELETE CASCADE

İlgili konular