2010-01-05 14 views
10

से जुड़ना मैं कुछ संवेदनशील डेटा के साथ काम कर रहा हूं, इसलिए मैं निश्चित रूप से यह सुनिश्चित करना चाहता हूं कि मैं इसे ठीक से कर रहा हूं।तालिका से डेटा हटाएं, दो टेबल

मुझे लगता है कि एक और तालिका

तालिका संबद्ध करने के लिए एक ही रास्ता दो अन्य तालिकाओं के माध्यम से शामिल होने के लिए है के साथ जुड़े रहे एक तालिका में पंक्तियों को हटाने के लिए कोशिश कर रहा हूँ ...

यहाँ सटीक क्वेरी है :

DELETE tt.Transaction_Amount, tt.Transaction_ID 
    FROM ItemTracker_dbo.Transaction_Type tt 
    JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID 
    JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID 
    JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID 
WHERE i.Client_ID = 1 

जैसा कि आप देख सकते हैं, यह सुंदर नहीं है।

मैं हालांकि MySQL क्वेरी ब्राउज़र के माध्यम से एक अजीब त्रुटि मिल रही है ...

अज्ञात तालिका 'TRANSACTION_AMOUNT' बहु में DELETE mysql मैनुअल पढ़ने

मैंने कोशिश की है और यह ऐसा लगता है कि यह मेरे लिए काम करना चाहिए ... किसी के पास कोई विचार है?

+0

आप अपनी क्वेरी में कहीं और लेनदेन तालिका का उपयोग नहीं कर रहे हैं। क्या यह जानबूझकर है? –

+0

सुनिश्चित करें कि आपने हटाए जाने से पहले अपना डेटा/डेटाबेस बैक अप लिया है। –

+0

क्या एक लेनदेन है? ऐसा लगता है कि आप पंक्तियों की बजाय तालिका से 2 कॉलम निकालने का प्रयास कर रहे हैं ... –

उत्तर

23

आप, नहीं अलग-अलग स्तंभों tt से हुई पंक्तियां हटाना की जरूरत है। इतना आसान है कि कुछ भी गलत हो रहा है तो आप कम से कम बैकअप ले सकते हैं।

+0

धन्यवाद !! यह पूरी तरह से काम करता है =) –

+0

आपको नाम या उपनाम के साथ, हटाए जाने के लिए टेबल निर्दिष्ट करना होगा, बहु-तालिका में 'DELETE' और' FROM' के बीच –

+0

@ md5sum: यह बहु-तालिका डिलीट के लिए है, लेकिन मैं भी पता नहीं है कि यह इस उदाहरण में एक भिन्नता बनाता है –

0

आपको शुरुआत में ब्याज की पंक्तियों को वापस करने के लिए एक प्रश्न के रूप में इसे लिखना चाहिए। एक बार यह सब डीबग हो जाने के बाद, इसे एक डिलीट में परिवर्तित करें।

+0

है। चयन ठीक काम करता है। –

1

वाक्यविन्यास गलत है - DELETE और FROM के बीच आप don't reference columns गलत हैं। का उपयोग करें:

DELETE FROM ItemTracker_dbo.Transaction_Type tt 
    JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID 
    JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID 
    JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID 
WHERE i.Client_ID = 1 

करें कि आप सही सामान हटा रहे हैं, तो मुझे खुद wallyk कि आप SELECT कथन के उत्पादन की जाँच करनी चाहिए क्या दिया जाता है कि आप क्या करने से पहले निकालना चाहते है उस के साथ सहमत हैं। अन्यथा, लेनदेन में हटाएं ताकि आप आवश्यकता होने पर इसे वापस रोल कर सकें। चयन क्वेरी के साथ

DELETE tt 
    FROM ItemTracker_dbo.Transaction_Type tt 
    JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID 
    JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID 
    JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID 
WHERE i.Client_ID = 1 
+1

ऐसा न करें कि यह काम करेगा - ऊपर दी गई अपनी टिप्पणी का मेरा उत्तर देखें। –

0

चेक और उसके बाद क्वेरी हटाने महत्वपूर्ण डेटा कि तालिका का बैकअप मिलता है पर निष्पादित करने से पहले:

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