2012-05-23 10 views
9

इस क्वेरी मुझे MySQL 5.1.57 में एक त्रुटि देता है, हालांकि 5.1.53 में काम करता है:अज्ञात तालिका हटाएँ


    DELETE f 
    FROM table1 AS f 
    JOIN table2 AS dsy 
    JOIN table3 AS ds 
    JOIN table4 AS dp 
    JOIN table5 AS dg 
    WHERE 
    dsy.f1 = f.f1 
    AND ds.f2 = f.f2 
    AND dp.f3 = f.f3 
    AND dg.f4 = f.f4 
    AND dsy.school_year = 2011 
    AND ds.id = 29620 
    AND dp.id = 14120 
    AND dg.grade_level = 5; 

त्रुटि है: बहु में अज्ञात तालिका 'एफ' DELETE

धन्यवाद!

संपादित करें: असल में यह क्वेरी काम करती है, बात यह है कि मैं schema.table1 (मैंने इसे और अधिक स्पष्ट क्वेरी पोस्ट करने के लिए हटा दिया है) जैसे स्कीमा नाम के साथ स्कीमा नाम का उपयोग कर स्कीमा नाम का उपयोग कर रहा था।

+0

आप पर "f" उर्फ ​​जगह की कोशिश की है वास्तविक तालिका नाम के साथ पहली पंक्ति? इसके लिए एक बग रिपोर्ट है। http://bugs.mysql.com/bug.php?id=27525। फिक्स केवल 5.2 में प्रतीत होता है? – Marvo

+0

DELETE तालिका 1 करने के लिए काम नहीं करता है ..., त्रुटि समान है, अज्ञात तालिका 'table1' बहु डेली –

+2

में यदि त्रुटि बहु-डेटाबेस क्वेरी में होती है, तो आपको डेटाबेस के साथ उपनामों को उपसर्ग करना होगा नाम। यानी 'dle1 dable1 da1.table1 से एक जॉइन db2.table2 बी बाएं जॉइन ... ' – Matthieu

उत्तर

9

इस क्वेरी का प्रयास करें -

DELETE f 
FROM table1 AS f 
JOIN table2 AS dsy 
    ON dsy.f1 = f.f1 
JOIN table3 AS ds 
    ON ds.f2 = f.f2 
JOIN table4 AS dp 
    ON dp.f3 = f.f3 
JOIN table5 AS dg 
    ON dg.f4 = f.f4 
WHERE 
    dsy.school_year = 2011 AND ds.id = 29620 AND dp.id = 14120 AND dg.grade_level = 5; 
+0

यह एक काम करता है, आपकी मदद के लिए धन्यवाद! अजीब चीज मुझे याद है कि बहुत समय पहले ऐसा कुछ कर रहा था और वह काम नहीं कर रहा था, इसलिए मैंने सब कुछ कहां रखा ... –

+2

संपादित करें: वास्तव में मेरी मूल क्वेरी काम करती है, बात यह है कि मैं स्कीमा नाम का उपयोग कर रहा था schema.table1 जैसी मेरी सारणी घोषित करें, स्कीमा नाम के साथ यह टूट जाता है ... –

+0

स्कीमा समेत भी मेरे लिए इसे मार रहा था। मुझे "माइस्केमा" का उपयोग करना पड़ा; " इसे काम करने के लिए एक ही प्रश्न में। –

3

क्या आपने अपनी सभी तालिका उपनाम को हटाने का प्रयास किया है? here प्रस्तावित एक समान समाधान है। तो निम्न कार्य कर सकें:

DELETE table1 
    FROM table1 
    JOIN table2 
    JOIN table3 
    JOIN table4 
    JOIN table5 
    WHERE 
    table2.f1 = table1 .f1 
    AND table3.f2 = table1.f2 
    AND table4.f3 = table1.f3 
    AND table5.f4 = table1.f4 
    AND table2.school_year = 2011 
    AND table3.id = 29620 
    AND table4.id = 14120 
    AND table5.grade_level = 5; 
+2

जो मेरा मुद्दा था। हो सकता है कि आपको यह जवाब थोड़ा और स्पष्ट कर दे कि यह क्यों काम करता है। सवाल बिना किसी लिंक के अपने आप खड़ा होना चाहिए। –

+0

इस मामले का सारांश यह है कि आपको तालिका के पूर्ण नाम पर शीर्ष 'DELETE' भाग में अपनी तालिका उपनाम का उपयोग करना चाहिए। – Gruber

1

मैं स्कीमा का उपयोग कर के साथ एक ही त्रुटि का समाधान करने के बाद हटा दें:

DELETE **`schemaX`.f** 
    FROM `schemaX`.table1 AS f 
    JOIN table2 AS dsy 
    JOIN table3 AS ds 
    JOIN table4 AS dp 
    JOIN table5 AS dg 
    WHERE 
    dsy.f1 = f.f1 
    AND ds.f2 = f.f2 
    AND dp.f3 = f.f3 
    AND dg.f4 = f.f4 
    AND dsy.school_year = 2011 
    AND ds.id = 29620 
    AND dp.id = 14120 
    AND dg.grade_level = 5; 
संबंधित मुद्दे