استعلام البيانات ذات الصلة بناء على عبارة "مثل"
-
16-09-2019 - |
سؤال
انا لدي طاولتان
الجدول 1: كولنا (varchar)
الجدول 2: عمود (varchar)
أحتاج إلى الحصول على جميع الصفوف من T2 حيث يعد العمود "مثل" أي من الصفوف من "كولومنا". على سبيل المثال، قد تكون الصفوف في T1:
- summer09.
- Fall09.
بينما الصفوف في T2 قد يكون
- SPRING09 COM101 SEC1.
- Summer09 Stat400 SEC2.
- Fall09 CS200 SEC3.
في هذا السيناريو، ستقوم بإعادة صفقات STAT400 و CS200. هل هناك طريقة للقيام بذلك في بيان SQL واحد؟
المحلول
SELECT T2.*
FROM T1, T2
WHERE T1.ColumnB LIKE T2.ColumnA + '%'
أو
SELECT T2.*
FROM T1
INNER JOIN T2 ON T1.ColumnB LIKE T2.ColumnA + '%'
ربما لن يركض بسرعة كبيرة.
نصائح أخرى
يشير هذا السؤال إلى تصميم طاولة سيئة. وقال صديقي الجيد كامد دائما: لا تجمع بين أجزاء متعددة من المعلومات في عمود واحد!
يجب تقسيم T1 Coulm، لذلك يجب أن يكون الفصل الدراسي و / أو السنة عمود (أعمدة) خاصة به مع FKs إلى جدول T2 حيث يمكن العثور على معلومات الصفية باستخدام فهرس ولا يشبه!
لا تنتمي إلى StackOverflow