Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Veritabanları & SQL

Cevapla
 
LinkBack Seçenekler
Eski 18/09/2006, 19:15   #1 (permalink)
Cevizkıran
 
stripe1916 Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 95
Varsayılan 5 tablodan aynı anda silme

Ürün sistemini tuttuğum 5 tane tablo var.
Bunlar :

ürün kategorileri tablosu
ürünler tablosu
ürün resimleri tablosu
ürün özellik kategorileri tablosu
özellikler tablosu

yapmak istediğim: admin panelinden bir ürün kategorisini sil dediğim zaman o kategoriye ait herşeyin ( kategori, kategori altındaki ürünler, bu ürünleri özellik tablosundaki kayıtları ,vs.... ) silinmesi.

PHP Kodu:
DELETE 
products_tr
,
product_cat_tr,
product_imgs_tr,
product_specs_tr,
product_spec_cat_tr 
FROM 
products_tr
,
product_cat_tr,
product_imgs_tr,
product_specs_tr,
product_spec_cat_tr 
WHERE 
products_tr
.parent product_cat_tr.id AND 
product_spec_cat_tr.parent_product products_tr.id AND 
product_specs_tr.parent_product products_tr.id AND 
product_imgs_tr.product_id products_tr.id AND 
product_cat_tr.id $cat_id_to_delete 
bu sorguyu yazdım. aslında istediğimi yapıyor.
ama problem şu ki: tablolardan herhangi birisinden şartı sağlayan kayıt gelmezse tablolardan hiçbişey silinmiyor.
mesela bi tane ürünün resmi yok diyelim. o zaman bu ilişkiye ait hiçbir satır silinmiyor. benim istediğim resim ya da özellik tablolarında bişey gelmese de ürün ve kategorinin silinmesi.
umarım promlemimi anlatabilmişimdir.
yardımcı olursanız sevinirim.

eğer linkler çalışmıyorsa ektaki tables.rar dosyasından bakabilirsiniz.
Eklenmiş Dosyalar
File Type: rar tables.rar (35.6 KB, 7 views)
stripe1916 hatta değil   Alıntı Yaparak Yanıtla
Eski 20/09/2006, 12:06   #2 (permalink)
Iki Ters Bir Düz...
 
Revne Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2005
Mesaj: 595
Varsayılan

Hangi veritabanı sistemini kullandıgını bilmiyrum...
Ama cogu veritabanı siteminde ilişkiler ve ilişkilerin ozelliklerini tanımlayarak bu işlemin otomatik yapılmasını sağlayabilirsin..

Kolay Gelsin..
Revne hatta değil   Alıntı Yaparak Yanıtla
Eski 20/09/2006, 13:13   #3 (permalink)
Cevizkıran
 
stripe1916 Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 95
Varsayılan

mysql veritabanı kullanıyorum.
bu bahsettiğin ilişki özelliklerini tanımlama konusunu biraz daha açıklayabilirmisin ya da google da arayacağım anahtar kelimeler ne olabilir?
stripe1916 hatta değil   Alıntı Yaparak Yanıtla
Eski 11/10/2006, 15:50   #4 (permalink)
İptal Durumu
 
umitiri Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2006
Yer: İzmir ve İzmit
Mesaj: 116
Varsayılan

alt alta sql yazmayı denedin mi muhtemelen işini görür.
sql="DELETE product_spec_cat_tr FROM product_spec_cat_tr WHERE product_cat_tr.id = $cat_id_to_delete "
sql="DELETE product_spec_cat_tr FROM tablo2 WHERE product_cat_tr.id = $cat_id_to_delete "
sql="DELETE product_spec_cat_tr FROM tablo3 WHERE product_cat_tr.id = $cat_id_to_delete "

tahminimce bu şekilde silersen herhangi bir sorun olmaz.

ben mssql de trigger kullanıyorum, ancak mysql den hiç anlamıyorum.
umitiri hatta değil   Alıntı Yaparak Yanıtla
Eski 15/10/2006, 00:21   #5 (permalink)
Cevizkıran
 
stripe1916 Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 95
Varsayılan

öncelikle şunu söyleyeyim problemi hallettim. ilgilenen arkadaşlara teşekkür ederim. nasıl hallettiğimi de analtayım dimi

bu işi ilk yapmaya başladığımda myisam storage engine kullanıyordum. yani veri tabanından aslında olmayan ilişkileri ben sorgularla kurup işimi halletmeye çalışıyordum. şimdi innodb storage engine kullanarak bütün ilişkileri veri tabanı üzerinde kurdum ve ürün kategorileri tablosu dışındaki tabloların foreign key alanlarına ON DELETE CASCADE ekledim. bu şekilde bir ürün kategorisi sildiğim zaman bu kategoriye ait herşey gayet güzel bir şekilde ilişkiler doğrultusunda siliniyor.
stripe1916 hatta değil   Alıntı Yaparak Yanıtla
Eski 15/10/2006, 00:37   #6 (permalink)
Perl Programlama
 
perlci Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 09/2004
Mesaj: 2,184
Varsayılan

ON DELETE CASCADE
örneklemen mümkünmü?
__________________
eperl.net video
perlci hatta değil   Alıntı Yaparak Yanıtla
Eski 15/10/2006, 00:40   #7 (permalink)
Cevizkıran
 
stripe1916 Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 95
Varsayılan

tabiki bekle geliyor hemen...
stripe1916 hatta değil   Alıntı Yaparak Yanıtla
Eski 15/10/2006, 00:47   #8 (permalink)
Cevizkıran
 
stripe1916 Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 95
Varsayılan

kendi phpmyadminime giremedim bi problem var galiba. daha doğrusu şifreyi değiştirdim şimdi o şifreyi hatırlamıyorum

bende dev.mysql.com dan bir örnek buldum
tam adres

Alıntı:
CREATE TABLE reviewing
(
reviewingid INTEGER ,
papername text,
reviewername text,
PRIMARY KEY(reviewingid)
);

CREATE TABLE score
(
reviewingid integer,
questionnumber integer,
score integer,
FOREIGN KEY (reviewingid) REFERENCES reviewing (reviewingid) on delete cascade
);

insert into reviewing values (1,"how to survive","John Doe") ;
insert into score values(1,1,5);
delete from reviewing where reviewingid = 1;

Insert the record in the table reviewing, and then insert the record into the table score which reviewingid in table score is referenced to reviewingid in reviewing table.

When deleting the record in the reviewing table, the record in the score with the same reviewerid is also deleted as well, because of the "on delete cascade" clause.
stripe1916 hatta değil   Alıntı Yaparak Yanıtla
Eski 15/10/2006, 01:38   #9 (permalink)
Agresif Üye
 
turker Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 07/2002
Mesaj: 6,290
Varsayılan

benim becerksizliğim mi emin değilim ama kayıt miktar çok(1milyon + satır) ve text indexlerin büyüklüğü(10mb civarı) fazla iken innodb pek bir ağır kalmıştı.
turker hatta değil   Alıntı Yaparak Yanıtla
Eski 15/10/2006, 01:57   #10 (permalink)
Cevizkıran
 
stripe1916 Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 95
Varsayılan

Alıntı:
turker, mesajından alıntı: Mesajı Gör
benim becerksizliğim mi emin değilim ama kayıt miktar çok(1milyon + satır) ve text indexlerin büyüklüğü(10mb civarı) fazla iken innodb pek bir ağır kalmıştı.
http://www.innodb.com/
Alıntı:
Totally we have about 30 servers (mostly Dual PIII with 1-2 GB of RAM) which have in total more than 1 TB of data stored in MySQL databases. The number of tables is more than 100 000 (small tables were used with MyISAM to overcome concurrency problems in table level locking used with MyISAM). The tables contain more than 20 000 000 000 rows in total.

......

InnoDB rocks, as you know
stripe1916 hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
C++ da aynı anda 2 işlem ? mavist C / C++ 1 23/01/2007 03:54
php aynı anda 2 veritabanına bağlanabilirmi? programcimusti PHP 9 09/04/2006 04:05
Serverler Aynı Anda Uçuyor ReSSaM GNU / Linux / UNIX / BSD / Pardus 7 01/04/2006 20:46
aynı anda yapılabilir mi? burakco ASP 10 23/09/2005 21:35
aynı anda 2 cd yazmak için Gurhan Donanım 9 29/10/2003 22:58


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 20:34.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net