Saya mahu memasukkan user_Id daripada satu jadual ke dalam parent_id jadual lain, tetapi tiada nilai sepunya antara kedua-dua jadual.
P粉323224129
P粉323224129 2023-07-30 13:35:25
0
1
414
<p style="white-space:normal;">Saya kini mempunyai tiga jadual: </p><p style="white-space:normal;">jadual pengguna//Data dimasukkan semasa pendaftaran <pre class="brush:php;toolbar:false;">usersId //KUNCI UTAMA userfName nama pengguna userUid emel penggunaPwd dateTime</pre> <p><kod>induk</kod> <pre class="brush:php;toolbar:false;">id //KUNCI UTAMA ikB nama mL mEmel mPhone fname nama fL fEmel fTelefon alamatL1 alamatL2 bandar negeriAbbr zip dicipta_di user_id //KUNCI ASING</pre> <p>Saya menggunakan lajur e-mel daripada jadual pengguna dan mEmail atau fEmail untuk memasukkan usersId ke dalam jadual ibu bapa. </p> <p><kod>Kanak-kanak</kod> <pre class="brush:php;toolbar:false;">child_id //KUNCI UTAMA anak1Nama dobAnak1 umurKanak1 anak2Nama dobAnak2 umurKanak2 anak3Nama dobChild3 umurKanak3 anak4Nama dobAnak4 umurKanak4 anak5Nama dobAnak5 umurKanak5 anak6Nama dobAnak6 umurKanak6 anak7Nama dobChild7 umurKanak7 anak8Nama dobAnak8 umurKanak8 anak9Nama dobAnak9 umurKanak9 anak10Nama dobChild10 umurKanak10 parent_id //KUNCI ASING</pra> <p>Tiada nilai sepunya antara meja kanak-kanak dan dua jadual lain. Jangkaan saya adalah untuk melakukan pengesahan antara jadual pengguna dan jadual induk, dan jika usersId jadual pengguna dan user_id jadual induk adalah sama, masukkan nilai tersebut ke dalam parent_id jadual kanak-kanak. Adakah ini mungkin? Saya mempertimbangkan untuk menggunakan gabungan silang, tetapi saya bimbang prestasi akan terjejas apabila bilangan entri dalam pangkalan data bertambah. </p> <pre class="brush:php;toolbar:false;">SELECT usersId DARIPADA pengguna; PILIH user_id DARIPADA induk; KEMASKINI kanak-kanak (Id_ibu bapa) SERTAI ibu bapa DALAM children.parent_id = users.usersId KEMASKINI kanak-kanak PILIH usersId DARIPADA pengguna silang SERTAI anak.id_ibubapa PADA pengguna.Idpengguna = anak.id_ibubapa KEMASKINI kanak-kanak INNER JOIN pengguna (INNER JOIN parent ON users.userId = parent.userId) ON users.usersId = parent.user_id SET children.parent_id = parent.user_Id;</pre> <p>Saya telah mencuba setiap kaedah tetapi tidak berjaya. Saya juga cuba menukar susunan sambungan tetapi itu tidak berfungsi sama ada. Terima kasih banyak atas sebarang bantuan yang anda boleh berikan. </p>
P粉323224129
P粉323224129

membalas semua(1)
P粉596161915

Berdasarkan penerangan anda, anda ingin mengemas kini lajur parent_id dalam jadual anak berdasarkan nilai padanan antara jadual pengguna dan jadual induk. Anda ingin mengemas kini parent_id dalam jadual anak dengan usersId daripada jadual pengguna dan user_id daripada jadual induk.

Anda boleh melakukan ini menggunakan pertanyaan SQL berikut:


UPDATE Children c
SET c.parent_id = (
  SELECT p.user_id
  FROM users u
  JOIN parent p ON u.email = p.mEmail OR u.email = p.fEmail
  WHERE c.parent_id IS NULL -- Only update rows with NULL parent_id to avoid overwriting existing values
  LIMIT 1 -- Assuming you want to update one parent_id per child record; you may modify this as needed
);

Penjelasan:

  1. PENYATAAN KEMASKINI digunakan untuk mengemas kini jadual Kanak-kanak, menyalinkannya sebagai c.
  2. Kami menggunakan subkueri untuk mencari user_id dalam jadual induk yang sepadan dengan e-mel dalam jadual pengguna (memadankan mEmail atau fEmail).
  3. SAYA SERTAI menyertai pengguna dan jadual ibu bapa berdasarkan padanan e-mel.
  4. Klausa WHERE memastikan bahawa kami hanya mengemas kini baris dalam jadual Kanak-kanak yang parent_idnya pada masa ini NULL (ini mengelak daripada menulis ganti jika anda telah memasukkan beberapa ID induk).
  5. LIMIT 1 memastikan kami mengemas kini satu parent_id bagi setiap rekod anak; anda boleh melaraskan nilai ini jika anda perlu mengemas kini berbilang rekod bagi setiap rekod anak.

Pastikan anda membuat sandaran pangkalan data anda sebelum menjalankan sebarang pertanyaan kemas kini, hanya untuk selamat. ,

Mengenai kebimbangan anda tentang prestasi apabila entri pangkalan data berkembang, pertanyaan ini harus cekap selagi terdapat indeks yang sesuai pada lajur yang berkaitan, seperti e-mel dalam jadual pengguna dan mEmail dan fEmail dalam jadual induk. Indeks akan mempercepatkan proses carian dengan ketara, terutamanya apabila bekerja dengan set data yang besar.


Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan