2012-05-06 18 views
7

मेरे पास एक सर्वेक्षण के लिए एक टेबल है, और एक निश्चित survery से संबंधित सभी रिकॉर्ड हटाना चाहता है।एकाधिक तालिकाओं से सभी संबंधित रिकॉर्ड्स हटाएं

मेरे टेबल:

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

चलो कहते हैं कि मैं सभी रिकॉर्ड है कि surveyID 1.

से संबंधित हैं को नष्ट करना चाहते हैं चलो मैंने कोशिश की:

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

उपयोग कर सकते हैं अपनी मेज 'tblQuestion' या 'tblQuestions' कहा जाता है? –

+0

'tblQuestions'। अब संपादित किया गया – janlindso

उत्तर

7

दो तरीके:

  • के साथ विदेशी कुंजी बाधाएं सेट करें।
  • एकाधिक-तालिका DELETE कथन का उपयोग करें।

इस प्रयास करें:

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

यह क्वेरी काम नहीं करती है, मुझे लगता है कि यह कहना चाहिए: हटाएं * से ... है ना? या मैं गलत हूँ? – FidoBoy

2

अपने टेबल विदेशी कुंजी संदर्भ है, तो आप ON DELETE CASCADE

संबंधित मुद्दे