سؤال

قمنا بتغيير مخطط قاعدة البيانات ونقلنا علاقة بين المستخدمين/الحسابات من 1-1 إلى العديد من الأشياء التي تستخدم Accounts_Users.

لذلك لدينا حسابات ، مستخدمين ، حسابات _users (user_id و account_id)

لا تزال بياناتنا 1-1 ، وقررنا العودة. لذلك أنا بحاجة إلى SQL للعودة:

للهجرة اعتدت:

INSERT INTO accounts_users (account_id,user_id) SELECT id AS account_id, user_id AS user_id FROM accounts

للعودة إلى الوراء ، لقد حاولت:

UPDATE 
    accounts
SET
    user_id = ru.user_id
FROM 
    accounts r, accounts_users ru
ON 
    r.id = ru.account_id


Update accounts
Set r.user_id = ru.user_id
FROM accounts r, accounts_users ru
WHERE r.id = ru.account_id


SELECT accounts_users.user_id
   INTO accounts
   FROM accounts_users
   INNER JOIN accounts
   ON accounts.id = accounts_users.account_id

كل هذه تعطي خطأ SQL من نوع ما. أنا أظن أن SQL الخاص بي غامض ، وأنا بحاجة إلى نوع من الاختيار أولاً أو دقيقة أو شيء من هذا القبيل.

** لكي أكون واضحًا ، فأنا بالتأكيد لا يزال لدي علاقة 1-1 في البيانات ، لكن لا يمكنني اكتشاف SQL لإعادة البيانات من الجداول الموجودة إلى الجداول الأصلية. ما أبحث عنه هو بعض SQL العاملة التي ستأخذ البيانات من الحسابين وتضع user_id في جدول الحساب. شكرا يا جويل

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

المحلول

بامكانك ان تحاول...

UPDATE accounts
    SET user_id = (SELECT user_id
                       FROM accounts_users
                       WHERE accounts_users.accounts_id = accounts.accounts_id);

سيكون ذلك مملاً إذا كان لديك الكثير من الأعمدة في accounts_users التي يجب أن تعود accounts, ، على الرغم من ذلك ، ولن يعمل إذا كان هناك أي مشاكل مع IDS (وبالتالي إجابتي السابقة). كم عدد الأعمدة الموجودة؟

نصائح أخرى

إذا كان التعيين الخاص بك 1-1 ، فما عليك سوى تحديد النتيجة الأولى (أنت تعرف أن هناك واحدة فقط)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top