مجموعة فارغة أثناء اختيار البيانات في قاعدة البيانات العلائقية MySQL
-
19-09-2019 - |
سؤال
لدي بعض قاعدة بيانات MySQL العلائقية مع العشرات من الجداول ... استعلمني هو 1000 قدم الطويل وتحديد البيانات من جميع الجداول تقريبا ... لدي أيضا جدول "الرئيسي"، وجميع الجداول الأخرى تشير إلى ذلك. عندما أدخل صف واحد في طاولتي الرئيسية وعندما أقوم بإنشاء جميع العلاقات لهذا الصف في جداول أخرى، فإن استفساري يعمل بشكل جيد. ومع ذلك، إذا أدخلت صف واحد في الجدول الرئيسي وفي أي مكان آخر أحصل على مجموعة فارغة. ولكن أود الحصول على هذه المعلومات على الأقل في نتيجتي. أو بالطبع، بطبيعة الحال، جميع المعلومات التي تم إدخالها في الجداول الأخرى، بغض النظر عن حقيقة أن بعض الجداول ليس لديها معلومات لهذا السجل (الصف) ...
شكرا للمساعدة!
تحديث:
لا أستخدم بناء جملة الانضمام واستفساري يشبه هذا:
$query = "SELECT a.*, b.*, c.*, d.*, e.*, f.*";
$query .= " FROM a, b, c, d, e, f";
$query .= " WHERE a.aID = b.aID";
$query .= " AND b.bID = c.bID";
$query .= " AND b.bID = d.bID";
$query .= " AND b.bID = e.bID";
$query .= " AND b.bID = f.bID";
المحلول
سؤالك غامض جدا الآن، ولكن على الأرجح أنه يرجع إلى حقيقة أنك تستخدم INNER JOIN
S بدلا من LEFT JOIN
س.
هذا الاستعلام:
SELECT *
FROM main
JOIN secondary
ON secondary.main_id = main.id
سوف لا تعاد لا شيء إذا secondary
فارغ.
هذا الاستعلام:
SELECT *
FROM main
LEFT JOIN
secondary
ON secondary.main_id = main.id
سيعود على الأقل سجل واحد لكل سجل في main
, ، استبدال الحقول الثانوية مع NULL
إذا لم تكن هناك سجلات مطابقة في secondary
.
تحديث:
ضمنية JOIN
بناء الجملة تستخدم (تعداد الجداول وتوفير JOIN
الظروف في WHERE
جملة) يفترض INNER JOIN
س.
افترض أن a
هو الجدول "الرئيسي"، أعد كتابة استفسارك مثل هذا:
SELECT a.*, b.*, c.*, d.*, e.*, f.*
FROM a
LEFT JOIN
b
ON b.aID = a.aID
LEFT JOIN
с
ON c.bID = b.bID
LEFT JOIN
d
ON d.bID = b.bID
LEFT JOIN
e
ON e.bID = b.bID
LEFT JOIN
f
ON f.bID = b.bID