مجموعة فارغة أثناء اختيار البيانات في قاعدة البيانات العلائقية MySQL

StackOverflow https://stackoverflow.com/questions/1709270

سؤال

لدي بعض قاعدة بيانات 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 JOINS بدلا من 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top