Baris Pembaruan SQL dengan GABUNG di tabel yang sama

Saya sedang mengimpor data. Saya memiliki pohon yang terwujud di mana saya ingin membangun kembali nomor ID. Saya berencana mengimpor data dari tabel lama ke tabel baru, lalu memperbarui parent_id semua baris di tabel baru berdasarkan IDS yang baru dibuat.

Struktur tabel baru:

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `category_name` varchar(255) NOT NULL,
  `category_key` varchar(255) NOT NULL,
  `ip` varchar(255) NOT NULL,
  `id_parent` int(10) unsigned NOT NULL,
  `depth` int(10) unsigned NOT NULL,
  `old_node_Id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Seperti yang Anda lihat, di tabel baru saya telah menambahkan kolom tambahan bernama old_node_id yang ingin saya gunakan dalam pembaruan. Data yang diimpor tampak seperti di layar terlampir.

tampilan penjelajahan pohon yang terwujud

Sekarang saya ingin membangun kembali id ​​induk dengan kueri ini

UPDATE category k INNER JOIN category k2 ON k.old_node_id = k2.id_parent SET k.id_parent = k2.id 

Namun tidak ada baris yang terpengaruh. Apakah mungkin melakukan itu? Saya punya contoh data:

INSERT INTO `category` (`id`, `category_name`, `category_key`, `ip`, `id_parent`, `depth`, `old_node_Id`) VALUES
(1, 'Test 1', '031', '025_026_027_031', 1382, 4, 1382),
(2, 'Test 2', '032', '025_026_027_032', 1382, 4, 1178),
(3, 'Test 3', '034', '025_026_027_034', 1382, 4, 1179);

Itu adalah baris dari tabel baru. Yang harus saya lakukan hanyalah mengganti nilai id_parent dengan ID baru dari kolom id.


person webrama.pl    schedule 29.01.2014    source sumber
comment
dalam contoh Anda tidak ada baris yang cocok.   -  person echo_Me    schedule 30.01.2014
comment
Itu hanya contoh. Saya memiliki lebih banyak baris yang cocok dengan od_node_id dan id_parent.   -  person webrama.pl    schedule 30.01.2014
comment
tolong berikan contoh biola atau berikan beberapa contoh data.   -  person echo_Me    schedule 30.01.2014
comment
Contoh data ada di sini sekarang.   -  person webrama.pl    schedule 30.01.2014
comment
saya tidak tahu itu tidak berhasil untuk permintaan Anda tetapi tampaknya berfungsi di sini , atau mungkin kamu ingin yang lain?   -  person echo_Me    schedule 31.01.2014
comment
Inilah yang saya inginkan, tetapi untuk semua baris.   -  person webrama.pl    schedule 31.01.2014
comment
di sini untuk semua baris. sqlfiddle.com/#!2/06676/1   -  person echo_Me    schedule 31.01.2014
comment
Ini adalah pertanyaan yang sama yang Anda berikan kepada saya sebelumnya.   -  person webrama.pl    schedule 31.01.2014
comment
ya tapi saya menambahkan satu baris dan ingin Anda melihat hasilnya   -  person echo_Me    schedule 31.01.2014
comment
Oke berhasil. Saya tidak tahu kesalahan apa yang saya lakukan pada awalnya... Terima kasih.   -  person webrama.pl    schedule 31.01.2014
comment
sama-sama kawan. jika ada yang salah, debug saja dan lihat di mana kesalahan Anda   -  person echo_Me    schedule 31.01.2014


Jawaban (1)


dapatkah Anda melihat hasil sql di bawah ini yang digunakan dalam pernyataan pembaruan Anda untuk mengidentifikasi catatan yang akan diperbarui ... apakah ini memberikan hasil apa pun?

pilih * dari kategori k INNER JOIN kategori k2 ON k.old_node_id = k2.id_parent

ini akan membantu dalam menemukan baris yang harus diperbarui dengan klausa pembaruan.

person garpitmzn    schedule 29.01.2014
comment
Ya. Saya memiliki 35 hasil dengan pertanyaan Anda. Jadi ada ide bagaimana cara memperbarui sesuai kebutuhan saya? - person webrama.pl; 30.01.2014