سؤال

لدي الجداول الأساسية واحدة واثنين.دعونا ندعو لهم tbl1 و tbl2.

tbl1
---------
1 - apple |
2 - orange |
3 - banana |
4 - pineapple

tbl2
---------
1 - table |
2 - chair |
3 - sofa |

ثم هناك tbl3 الذي المفاتيح الخارجية التي تصل إلى كلا الجدولين أعلاه.

الجدول 3 شكل اثنين حدد الحقول:واحدة استعلامات tbl1 آخر استعلامات tbl2.جيد جدا حتى الآن.أنا الجمع بين العناصر من tbl1 و tbl2 في tbl3.

ثم لدي الحالة التالية:عندما يقوم المستخدمون الوفاء tbl3 أريد select2 (المقابلة البيانات من tbl2) إلى تحديث بعد أن المستخدم قد اختار عنصر من tbl1.من أجل ماذا ؟

دعنا نقول أنه للمرة الأولى الوفاء tbl3 المستخدم قد اختار "أبل" من tbl1 و "صوفا" من tbl2.عندما يقوم المستخدم اختيار "أبل" ، والثاني dropdownlist reloaded مع كل 3 عناصر من الخيارات.

ثانيا: الوقت المستخدم تحقق tbl3 شكل, إذا كان المستخدم يختار "أبل" مرة أخرى ، وقال انه سوف يكون الآن فقط 2 خيارات.أبل و أريكة تم انتقاؤها من قبل.الخيارات الآن فقط "الطاولة" و "كرسي".إذا كان يختار "أبل" و "الجدول" الآن تبقى الخيار الأول البند "أبل" سوف يكون "الرئيس".وهلم جرا...

لا أستطيع التفكير في SQL لتشغيل هذا الاستعلام الذي يستولي عناصر من tbl2.يجب استخدام العنصر المحدد من tbl1 و بطريقة ما الاستيلاء على البنود المتبقية ، تلك التي لا تتوافق مع ماخ.هذا هو استعلام SQL محتملة?أعتقد ذلك, ولكن لا يمكن التفكير في طريقة للخروج.

هل كانت مفيدة؟

المحلول

وأنا على التخمين بأن table3 له أعمدة:

والمستخدم، Tbl1-ID، Tbl2-ID

وأنا على التخمين الذي تريده، للمستخدم X، قيم tbl2 على أساس selecton مصنوعة من tbl1 التي ليست في الجدول 3.

SELECT ID, Value
FROM tbl2
WHERE tbl2.ID NOT IN (
   SELECT Tbl2-ID
   FROM Table3
   WHERE (User = <this user>) AND (Tbl1-ID = <selected tbl1 ID>)
   )

نصائح أخرى

إذا كانت الروابط على أساس لكل مستخدم:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id

إذا كانت الروابط هي هي لكل مستخدم أساس:

SQL Server:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = @userId

أوراكل:

SELECT t.id,
       t.value
  FROM TABLE2 t
  JOIN TABLE3 t3 ON t3.id != t.id AND t3.userid = :userId
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top