এমএস অ্যাক্সেসে সম্পূর্ণ আউটার জয়েন করুন


11

আমার দুটি কর্মী তালিকা রয়েছে:

List A:

StaffID   Supervisor
====================
0001234         NULL
0001235      0001234
0001237      0001234
0001239      0001237

এবং

List B:

StaffID   Supervisor
====================
0001234         NULL
0001235      0001234
0001238      0001235
0001239      0001235

এবং আমি নিম্নলিখিত আউটপুট প্রয়োজন:

StaffID   SupervisorA   SupervisorB
===================================
0001234          NULL          NULL
0001235       0001234       0001234
0001237       0001234          NULL
0001238          NULL       0001235
0001239       0001237       0001235

লক্ষ্য করুন যে তালিকা এ এবং তালিকা বি থেকে স্টাফ আইডিগুলি একটি একক, পুনরাবৃত্তিযোগ্য তালিকায় একত্রীকরণ করা হয়েছে এবং আমি দুটি সুপারভাইজারের বিবরণটি মিশ্রিত করেছি যা দুটি তালিকার মধ্যে মেলে না।

জিজ্ঞাসা সুন্দর হতে হবে না। প্রতিটি তালিকায় আমার কাছে 8000 ডলার রেকর্ড রয়েছে এবং আমি এটি খুব ভাল চালাব। আমি প্রয়োজন পরে কিছু ছোটখাটো এক্সেল ম্যানিপুলেশন করতে পেরে খুশি।

আমি একটি পূর্ণ যোগদান করতে চেয়েছিলাম, তবে যোগদানের অ্যাক্সেস কোয়েরি ডিজাইনার বৈশিষ্ট্য উইন্ডোটি আমাকে টেবিল এ থেকে সমস্ত এবং টেবিল বি থেকে মেলানো, টেবিল বি থেকে সমস্ত মিল এবং টেবিল এ এর ​​সাথে মিলছে বা কেবল উভয় এ উভয়ই মিলে যাচাই করতে দেয় allows এবং বি।

আমি নিশ্চিত যে এটি করা খুব সহজ তবে আমি খুব কমই এমএস অ্যাক্সেস ব্যবহার করি।

আমার এখনও পর্যন্ত দুটি প্রশ্ন রয়েছে যা আমি যা চাই তা আমাকে দেয় না। আমি তাদের সম্পূর্ণ বাইরের যোগদানের সাথে সংযুক্ত করতে চেয়েছিলাম, যেহেতু অ্যাক্সেস আমাকে কোনও বিকল্প দেয় না, তবে কীভাবে নিশ্চিত তা নয়:

SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.StaffID;

এবং

SELECT ListA.*, ListB.*
FROM ListB LEFT JOIN ListA ON ListB.[StaffID] = ListA.StaffID;

উত্তর:


10

2003 এ আমি যখন এক্সটসের সাথে খেলেছিলাম তখন ছিল নতুন নতুন জিনিস, তাই এটি প্রতিটি বিবরণে সম্পূর্ণ সঠিক নাও হতে পারে। যাইহোক, আপনাকে যা করতে হবে তা হল কোয়েরি ডিজাইনারের কাছে গিয়ে ভিউটিকে "এসকিউএল" (অর্থাত কাঁচা পাঠ্য প্রবেশ) পরিবর্তন করুন এবং তারপরে আপনি UNIONআপনার দুটি বাম-যোগ প্রশ্নের সাথে একসাথে যেতে চান, যেমন

SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.StaffID
UNION
SELECT ListA.*, ListB.*
FROM ListB LEFT JOIN ListA ON ListB.[StaffID] = ListA.StaffID

আমি পছন্দ করি যে উত্তরটি একটি শব্দে কমিয়ে দেওয়া যেতে পারে: "ইউনিয়ন", যা আমি চেয়েছিলাম ঠিক
তেমন

1
সমস্যা নেই. অ্যাক্সেস সম্পূর্ণ বাইরের সাথে যোগ দেয় যদি এটি সমর্থন করত তবে ভালো লাগবে তবে আমারও যদি খুব একটা পনি থাকে তবে তাও ভাল লাগবে। (পিএস: এমনকি অ্যাক্সেসে ক্রস যোগ দিতে কিভাবে জিজ্ঞাসা করবেন না, এটি পরিমিতরূপে ভয়াবহ))
সাইমন রিঘর্টস

1
SELECT S.StaffId
     , ListA.Supervisor AS SupervisorA 
     , ListB.Supervisor AS SupervisorB
FROM 
    ( SELECT StaffID
      FROM ListA 
    UNION 
      SELECT StaffID
      FROM ListB
    ) AS S
  LEFT JOIN ListA 
    ON ListA.StaffID = S.StaffID
  LEFT JOIN ListB 
    ON ListB.StaffID = S.StaffID

0

আপনি কি ডিজাইনার ভিউ ব্যবহারের পরিবর্তে এসকিউএল মোডে কোয়েরিটি ডিজাইনের চেষ্টা করেছেন?

আপনি অ্যাক্সেস ব্যবহার করে থাকেন 2003 / এক্সপি / 2000/97 তারপর এই কটাক্ষপাত করা: http://www.techonthenet.com/access/queries/view_sql.php

আপনি যদি অ্যাক্সেস 2007/2010 ব্যবহার করে থাকেন তবে আপনি ফিতাটির বাম দিকে ভিউ বোতামে তীরটি ক্লিক করে এটি করতে পারেন। তারপরে এসকিউএল ভিউতে ক্লিক করুন।


0
SELECT ListA.*, ListB.*
FROM ListA LEFT JOIN ListB ON ListA.[StaffID] = ListB.[StaffID]
UNION
SELECT ListA.*, ListB.*
FROM ListA RIGHT JOIN ListB ON ListA.[StaffID] = ListB.[StaffID];

0
SELECT ListA.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA LEFT JOIN ListB ON ListA.staffID = ListB.staffID
WHERE (((ListB.staffID) Is Null))
UNION
SELECT ListB.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA RIGHT JOIN ListB ON ListA.staffID = ListB.staffID
WHERE (((ListA.staffID) Is Null))
UNION
SELECT ListA.staffID, ListA.Supervisor, ListB.Supervisor
FROM ListA INNER JOIN ListB ON ListA.staffID = ListB.staffID
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.