মাইএসকিউএলে "প্রতিটি উত্সযুক্ত টেবিলের নিজস্ব নিজস্ব নাম থাকা উচিত" ত্রুটিটি কী?


386

আমি এই কোয়েরিটি মাইএসকিউএলে চালাচ্ছি

SELECT ID FROM (
    SELECT ID, msisdn
    FROM (
        SELECT * FROM TT2
    )
);

এবং এটি এই ত্রুটি দিচ্ছে:

প্রতিটি উত্সযুক্ত টেবিলের অবশ্যই নিজস্ব নিজস্ব নাম থাকতে হবে।

কী কারণে এই ত্রুটি ঘটছে?


14
আপনি কি এইটিকে "টিটি 2 থেকে আইডি নির্বাচন করুন" হিসাবে সরল করতে পারবেন না?
ডিএমকিং

5
আমি সম্প্রতি এই ত্রুটিটি পেয়েছি কারণ আমার কাছে একটি কোয়েরিতে )অনেকগুলি UNION ALLএস সহ অতিরিক্ত ছিল ।
এমপেন

10
এটি কীভাবে # 1 গুগল অনুসন্ধান হিসাবে দেখা হচ্ছে ... স্বীকৃত উত্তরটি সত্যই ত্রুটির উত্তর দেয় না 'প্রতিটি উত্সযুক্ত টেবিলের অবশ্যই তার নিজস্ব নাম থাকতে হবে'। আরও তথ্যের জন্য নীচে দেখুন।
ড্যানিয়েল বি চ্যাপম্যান

উত্তর:


542

প্রতিটি উত্সযুক্ত টেবিলের (একে একে সাব-কোয়েরি) অবশ্যই একটি নাম থাকতে হবে। অর্থাৎ বন্ধনীর প্রতিটি ক্যোয়ারীকে অবশ্যই একটি উপনাম ( AS whatever) দিতে হবে, যা বাইরের ক্যোয়ারির বাকী অংশে এটি উল্লেখ করতে ব্যবহার করা যেতে পারে।

SELECT ID FROM (
    SELECT ID, msisdn FROM (
        SELECT * FROM TT2
    ) AS T
) AS T

আপনার ক্ষেত্রে অবশ্যই পুরো প্রশ্নের সাথে এটি প্রতিস্থাপন করা যেতে পারে:

SELECT ID FROM TT2

21
দেখানো স্যাম্প কোডের সঠিক উত্তর তবে বেশিরভাগ ব্যবহারকারীদের জন্য এই প্রশ্নের সন্ধান করা সমাধান নয়।
টুবি

1
@ তোব আমি কি কৌতুহল করছি আপনি এর দ্বারা কি বোঝাতে চেয়েছেন? উত্তরটি যে কোনও প্রশ্নের ক্ষেত্রে সত্য, যেটি আপনার কাছে ক্লজ থেকে আপনার উত্সযুক্ত টেবিল থাকলে আপনার এটি একটি উপাধি দেওয়া দরকার।
অ্যাডামএমসি 331

2
দুঃখিত, আমি দেখতে পেলাম না যে আপনি মূল জিজ্ঞাসাটিও ঠিক করেছেন এবং ASবিবৃতিগুলি যুক্ত করেছেন। আমি ভেবেছিলাম আপনি কেবল শর্টহ্যান্ড দেখিয়েছেন। আমার ডাউনটোট সরিয়েছি
টুবি

আমি @ টোবিকে নিয়ে একই চিন্তা করছি। উত্তরটি হ'ল: "এখানে, উত্পন্ন টেবিলের অর্থ 'এফআরওএম ক্লজটিতে ব্যবহৃত সাব-কোয়েরি' the প্রশ্নকারীদের ক্ষেত্রে; এগুলি প্রথম বন্ধকের অভ্যন্তরীণ সাব-কোয়েরি। এই প্রশ্নের জন্য, ডিবিএমএস কোয়েরি ইঞ্জিনটি নির্ধারণ করতে পারে না যে কোয়েরিটি তাদের নাম (বা উপকরণ) ব্যতীত কী তাই তাই, আপনাকে অবশ্যই ডিবিএম ক্যোয়ারী ইঞ্জিনটি সঠিকভাবে কাজ করতে আপনার সমস্ত সাব-কোয়েরির জন্য অনন্য নাম (উপকরণ) দিতে হবে। "
বাহাদির তাসদেমির

1
সাবকিউরিটি স্পষ্ট করে বলা ভাল যে কোনও উত্সযুক্ত টেবিল নয়: এটি সরাসরি কোনও এফআরএমের শর্তের মধ্যে থাকতে হবে। মত বিবৃতি SELECT...FROM...WHERE x NOT IN (subquery) AS Tএকটি ত্রুটি ট্রিগার করবে
নিকোলাস

76

আমি মনে করি এটি আপনাকে এটি করতে বলছে:

SELECT ID
FROM (SELECT ID,
             msisdn 
      FROM (SELECT * FROM TT2) as myalias
     ) as anotheralias;

তবে আপনি কেন এই কোয়েরিটি প্রথম স্থানে লিখবেন?


16
প্রকৃত ক্যোয়ারীটি অনেক দীর্ঘ ... আমি এটিকে যথেষ্ট ছোট করে দিয়েছি যে এখানকার লোকেরা এটি বুঝতে কম সময় পান। সংক্ষিপ্ত এবং দীর্ঘ প্রশ্নের সাথে ত্রুটিটি একই ছিল।
সিলভারকিড

আমি এখন বুঝতে পেরেছি. আমি ভাবছিলাম এটি কোনও কোড দ্বারা উত্পাদিত হতে পারে। পল এবং ডিএমকিংয়ের পরামর্শ অনুসারে এটি এখনও সরল করা উচিত।
হোমটোস্ট

9
বাহ, আসলেই কি এটি অনর্থিত দ্বিতীয় উত্তর? সমস্যার যে কারও কাছেই এই উত্তরটি হ'ল মাইএসকিউএলকে অন্য অনেকগুলি বাস্তবায়নের মতো কেবল এটি ছেড়ে দেওয়ার পরিবর্তে "সাব ক্যোয়ারী" লেবেল করা প্রয়োজন।
ড্যানিয়েল বি চ্যাপম্যান

17

এখানে একটি পৃথক উদাহরণ যা অ্যালিয়াস ছাড়া পুনরায় লেখা যায় না (পারে না GROUP BY DISTINCT)।

একটি টেবিল নামক কল্পনা purchasesরেকর্ড করে কেনাকাটা করলে যে customersstores, IE এটা অনেক টেবিল এবং সফটওয়্যার চাহিদা জানতে যা গ্রাহকদের একটির বেশি দোকান এ কেনাকাটা করেছেন করার জন্য একটি অনেক আছে:

SELECT DISTINCT customer_id, SUM(1)
  FROM ( SELECT DISTINCT customer_id, store_id FROM purchases)
  GROUP BY customer_id HAVING 1 < SUM(1);

.. ত্রুটি দিয়ে বিরতি Every derived table must have its own alias। ঠিক করতে:

SELECT DISTINCT customer_id, SUM(1)
  FROM ( SELECT DISTINCT customer_id, store_id FROM purchases) AS custom
  GROUP BY customer_id HAVING 1 < SUM(1);

( AS customউপনামটি নোট করুন )


সাবমেরিতে এসইএম (1) এর প্রভাব কী?
xssChauhan
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.