Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

Kayıt Ol

Veritabanı Üzerindeki Bilgileri Değiştirmek ve Güncellemek Hakkında !

OsmanAtabey

0
Üye
Katılım
26 Mart 2005
Mesajlar
922
Tepki puanı
4
Bir tablo içindeki sütun üzerinde bir değiştirme işlemi yapmak istiyorum.

Sütun içindeki bilgiler . nokta işareti ile ayrılmıştır :

ID sutun1
1 b.
2 b.b1.b6.e4.t7.
3 b.b1.b6.e4.
4 b.b1.b6.
5 a.h.b1.c.b.z.
6 a.d.s.b1.w.b.

1) Başlangıç olarak ID nosu 1,2,3,4 olan satırlardaki sadece b1 verisini güncelleyip değiştirmek istiyorum.
Fakat ID nosu 5,6 olan satırların içindeki b1 verisinin bundan etkilenmemesi gerekiyor.

2) Diğer bir şekil ise ID nosu 1,2,3,4 olan satırlarının başında bulunan sadece b verisini güncelleyip
değiştirmek istiyorum.Fakat ID nosu 5,6 olan satırlardaki b verisinin bundan etkilenmemesi gerekiyor.

Bu tür bir değişimi nasıl bir mantıkla ve parametrelerle çözebilirim ?

- REPLACE komutunu kullandığımda benzer tüm verilerin hepsini değiştirmektedir.
- Sütun içindeki verileri parçalayıp WHERE ile ayıkladığımda ise güncelleme işlemini tam olarak yapamıyorum.
Örnek olarak b.b1.b6.e4.t7 yi parçaladım b1 verisi güncellenecek, b1 den önceki bölümü alıyorum ve sonuç
b.b11 olduğunu düşünürsek değişen bölümden sonraki verileri buna nasıl ekleyebilirim.
 

carbondioxide

0
Üye
Katılım
26 Ekim 2012
Mesajlar
0
Tepki puanı
0
veritabanında da veriler noktalarla ayrıldıysa explodela sütunu noktalardan ayırarak diziye alıp dizi içinde istediğin değişkeni değiştirebilir sonra da hepsini implodela yine aralarına nokta koyarak birleştirebilirsin
 

Angelo

0
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Tepki puanı
111
Konum
AZ
'b.b1.b6.e4.t7 ' - b1'i replace etmek niye benzer tüm verileri değiştiriyor, sadece b1 var orada?
eğer b1 den bağımsız, noktadan sonraki ikinci elemanı değiştirmek istiyorsan
substring_index() fonksiyonuna bakabilirsin
 

metadige

0
Üye
Katılım
23 Aralık 2005
Mesajlar
354
Tepki puanı
4
eğer sorununu yanlış anlamadıysam sql sorgunu doğru yapamıyorsun. Çünkü parçalamaya vs. gerek yok.

PHP:
update tablo set sutun=replace(sutun,'b1.','yeni.') where id in (1,2,3,4);

gibi bir sorguyla rahatça istediğini yapabilirsin.
 

OsmanAtabey

0
Üye
Katılım
26 Mart 2005
Mesajlar
922
Tepki puanı
4
Cevaplar için teşekkürler. Fakat bu konu benim için biraz karışıktı. 10 tane alt alta aynı isimli kategoriler açın ( b1.b1.b1 ... gibi ) ve bu kategorilere ait kayıtlar oluşturun. Daha sonrada kategori ismini değiştirdiginizde diğer hiçbir bölümü etkilemeden ilgili kayıttaki tüm kategori bilgileride değişmesi gerekiyor. replace gibi bir parametre ile bu sorunu çözemedim maalesef.

Zaten en basit çözümü gözden kaçırmışım. str_replace ile problemi çözdüm.
 

Angelo

0
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Tepki puanı
111
Konum
AZ
Ordaki b1.b2.b3 ler kategori ağacıysa, baya yanlış bir yol tutuyorsun yalnız =)
 

OsmanAtabey

0
Üye
Katılım
26 Mart 2005
Mesajlar
922
Tepki puanı
4
Angelo Alt yapısıda senin gösterdiğin şekilde tek sayfadan çalıştırma mantığı ve parçalama tekniği :) Neden yanlış olduğunu söylermisin aydınlanalım :)
 

Angelo

0
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Tepki puanı
111
Konum
AZ
İlerde bir gün b1 ve b3 kategorilerindeki ürünleri cekmek istersen, cat LIKE '%b1%' OR cat LIKE '%b3%' gibi birşey yapman gerekiyor.
Kategoriler ağaç şeklinde kurulmalı, sonra her ürünün bağımlı olduğu kategoriler, prod_kategori tarzı, ürün id'sini kategori id'sine bağlayan satırlardan oluşmalı.
Veritabanında normalizasyon olarak araştırabilirsin konuyu.
 

OsmanAtabey

0
Üye
Katılım
26 Mart 2005
Mesajlar
922
Tepki puanı
4
Söylemiş olduğun şeyleri tamamıyle yaptım sanıyorum. Fakat biraz değişik bir türde yapmış olabilirim o ayrı bir mesele :)
Kategorilendirme hiyerarşik bir düzende parent id 'ler ile birbirine bağlı ayrıca söylemiş olduğun gibi ürünlerin ilgili kategori ile bağlantı kurması ve kontrolü için ayrı bir sütün var. O bölümü biraz değişik yaptım.

Daha önce söylemiş olduğun tek sayfa ile yönetim şekli örneğinden yola çıkarak 5 milyon kayıtlı bir web site yapmıştım. Bu sitede yaşadığım problemlerden yola çıkarak bu şekilde bir alt yapı denemek istiyorum. Daha önceki sitenin yönetim sayfasında 100 satır kod varsa şimdikinde aynı işi yapan 20 satır kod var ve daha hızlı olduğunu düşünüyorum. Alt yapı tamamen bittiğinde random 5 veya 10 milyon kayıt ekleyip özellikle sayfalandırma, arama gibi sorguların nasıl çalıştığını kontrol edicem.

Angelo verdiğin bilgiler için çok teşekkürler. Senin nirvana derecesine ulaşmam için daha çok çalışmam lazım :)
 
Üst