মাইএসকিউএল একাধিক প্রশ্নে যোগ দেয়?


121

আমার নিম্নলিখিত জিজ্ঞাসা রয়েছে:

SELECT
  dashboard_data.headline,
  dashboard_data.message,
  dashboard_messages.image_id 
FROM dashboard_data
INNER JOIN dashboard_messages
  ON dashboard_message_id = dashboard_messages.id

সুতরাং আমি একটি ব্যবহার করছি INNER JOINএবং দখল করছি image_id। সুতরাং এখন, আমি সেই চিত্র_আইডি নিতে এবং images.filenameএটি চিত্রের টেবিল থেকে রূপান্তর করতে চাই ।

কীভাবে আমি আমার ক্যোয়ারিতে এটি যুক্ত করতে পারি?


উত্তর:


209

আপনি কেবল এই জাতীয়ভাবে আরও একটি যোগ যোগ করতে পারেন:

SELECT dashboard_data.headline, dashboard_data.message, dashboard_messages.image_id, images.filename
FROM dashboard_data 
    INNER JOIN dashboard_messages 
        ON dashboard_message_id = dashboard_messages.id
    INNER JOIN images
        ON dashboard_messages.image_id = images.image_id 

তবে সচেতন থাকুন যেহেতু এটি একটি INNER JOIN, যদি আপনার কোনও চিত্র ছাড়া কোনও বার্তা থাকে তবে পুরো সারিটি এড়িয়ে যাবে। যদি LEFT OUTER JOINএটির সম্ভাবনা থাকে তবে আপনি এমন একটি করতে চান যা আপনার সমস্ত ড্যাশবোর্ড বার্তাগুলি এবং একটি চিত্র_ ফাইল ফাইল কেবল উপস্থিত থাকলেই ফিরে আসবে (অন্যথায় আপনি একটি নাল পাবেন)

SELECT dashboard_data.headline, dashboard_data.message, dashboard_messages.image_id, images.filename
FROM dashboard_data 
    INNER JOIN dashboard_messages 
        ON dashboard_message_id = dashboard_messages.id
    LEFT OUTER JOIN images
        ON dashboard_messages.image_id = images.image_id 

19
কেউ জানেন যে এটি আসলে কীভাবে কাজ করে? টেবিল 3 এর সাথে প্রথম যোগদানের ফলাফলগুলিতে দ্বিতীয় যোগদানটি কি টেবিল 3 এর সাথে পৃথকভাবে টেবিল 1 এ যোগদান করছে? (উদাহরণস্বরূপ, টেবিল 2 সহ টেবিল 1 এ যোগদান করুন, এবং তারপরে টেবিল 3 এর সাথে আলাদাভাবে টেবিল 1 এ যোগদান করুন, তারপরে এটি সমস্ত ফিরিয়ে দেবেন?) এর অর্থ কী? আমি জিজ্ঞাসা করি কারণ আমি বহু-টেবিলটি এরকমভাবে যোগদান করি এবং কখনও কখনও অপ্রত্যাশিত ফলাফলও পাই।
অ্যারন ওয়াল্যান্টাইন

3
এটি অন ক্লজটি আপনাকে বলবে। ২ য় জোনের জন্য অন ক্লজ (তৃতীয় টেবিলটিতে যোগ দেওয়া) প্রতিটি সারণীতে চিত্র_আইডি ফিল্ডের চিত্রগুলিতে ড্যাশবোর্ড_মেসেজগুলি যোগ দিচ্ছে। সুতরাং, এক্ষেত্রে এটি A থেকে B এবং তারপরে B থেকে C এটি আপনার নিয়ন্ত্রণে। আপনার প্রয়োজন হলে আপনি এ থেকে বি এবং এ থেকে সি তৈরি করতে পারেন
জন বিডল

16

শুধু অন্য যোগ যোগ করুন:

SELECT dashboard_data.headline,
       dashboard_data.message,
       dashboard_messages.image_id,
       images.filename 
FROM dashboard_data 
    INNER JOIN dashboard_messages
            ON dashboard_message_id = dashboard_messages.id 
    INNER JOIN images
            ON dashboard_messages.image_id = images.image_id

9

আমি একটি একক এসকিউএল ক্যোয়ারিতে দুটি বাম জোয়ার ব্যবহার করার অভিজ্ঞতা ভাগ করে নিয়েছি।

আমার কাছে 3 টি টেবিল রয়েছে:

সারণী 1) রোগীর কলাম কমানোর পেন্টেন্টআইডি, পেন্টেন্টনাম থাকে

সারণী 2) অ্যাপয়েন্টমেন্ট অ্যাপয়েন্টমেন্টের মধ্যে কলামগুলি রয়েছে অ্যাপয়েন্টমেন্ট অ্যাপয়েন্টমেন্ট ID, অ্যাপয়েন্টমেন্টের তারিখ সময়, রোগী, ডক্টরআইডি

সারণী 3) ডক্টরে ডক্টরআইডি, ডক্টরনাম কলাম রয়েছে


প্রশ্ন:

SELECT Patient.patientname, AppointmentDateTime, Doctor.doctorname

FROM Appointment 

LEFT JOIN Doctor ON Appointment.doctorid = Doctor.doctorId  //have doctorId column common

LEFT JOIN Patient ON Appointment.PatientId = Patient.PatientId      //have patientid column common

WHERE Doctor.Doctorname LIKE 'varun%' // setting doctor name by using LIKE

AND Appointment.AppointmentDateTime BETWEEN '1/16/2001' AND '9/9/2014' //comparison b/w dates 

ORDER BY AppointmentDateTime ASC;  // getting data as ascending order

আমি "মিমি / ডিডি / ইয়াই" এর মতো তারিখের ফর্ম্যাট পেতে সমাধানটি লিখেছি (আমার নাম "" ভারুন টিজ রেডডি "এর অধীনে))


3

একের পর এক উত্সযুক্ত টেবিল তৈরি করে একের পর এক এসকিউএল কাজের সাথে যোগ দেয়। প্রক্রিয়াটি ব্যাখ্যা করে এই লিঙ্কটি দেখুন:

https://www.interfacett.com/blogs/multiple-joins-work-just-like-single-joins/


2
টার্গেট সাইটটি যদি অ্যাক্সেসযোগ্য না হয় বা স্থায়ীভাবে অফলাইনে চলে যায় তবে সর্বদা গুরুত্বপূর্ণ লিঙ্কের সর্বাধিক প্রাসঙ্গিক অংশটি উদ্ধৃত করুন।
আরমালি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.