Merhaba,
SQL insert ve database hakkında yardıma ihtiyacım var.
Örnek vermek gerekirse,
Bir kitap için birden fazla kategori seçilebilir ise bunun için one to many ilişkisinin mi olması gerekiyor.
Bunun için tablodaki kitap_id ve kategori_id 'leri birbirine eşitlemem yeterlidir sanırım.
Insert işleminde nasıl olacak orası anlamış değilim.
Bir kitaba ait 3 kategoriyi nasıl bir insert sorgusunda yapacağım ?
SQL çoklu ilişkilerde Insert işlemi
10
●568
- 20-07-2018, 16:10:58Kimlik doğrulama veya yönetimden onay bekliyor.Bunu 2 yöntemle yapabilirsin ilki 3 tablon olur ilki kitap diğeri kategori sonuncusu kit_kat diyebilirsin
(kitap ve kategori illişkisini tutacak alan) bir kitap eklendiği zaman o kitap id si ve kategori id sini kit_kat a eklersin kitap1->korku kitap1->macera tarzında genelde kullanılan mantık budur diğer bi yöntem ise her kategori için bi db oluşturup kitap eklendiği zaman o dblere kitap id eklemek ama bu responsluğu sağlamıyor. Bu söylediklerim SQL databaseler için geçerli nonSQL lerde durum biraz daha farklılaşıyor
- 20-07-2018, 16:13:35Malesef bunun gibi değil.nightLord adlı üyeden alıntı: mesajı görüntüle
Tablolar şu şekilde.
tblKitap -ID -Adı -KategoriID tblKategori -ID -Adı tblKitapKategori (İlişkilendirilmiş tablo) -KitapID ->tblKitap.ID -KategoriID ->tblKategori.ID
Uygulamada
Textbox alanına Kitabın adı giriliyor, ve listbox 'dan örneğin 1 den fazla kategori seçilebiliyor. Bir kitaba ait 3 adet kategori olabiliyor.
Insert into tblKitap (KitapAdi, KategoriID) values (@KitapAdı, @KategoriID)
şeklinde yaparsam bu kategoriID alanına sadece 1 adet kategori id girebiliyorum.
Teşekkürler.merthumoglu adlı üyeden alıntı: mesajı görüntüle
Insert sorgusu ne şekilde olmalı peki? - 20-07-2018, 16:25:10Cevaplar için teşekkürler.nightLord adlı üyeden alıntı: mesajı görüntüle
KitapAdı primarykey
ve sadece bir adet olmasını istiyorum.
- 20-07-2018, 16:33:42tblKitap
-ID
-Adı
tblKategori
-ID
-Adı
tblKitapKategori (İlişkilendirilmiş tablo)
-KitapID ->tblKitap.ID
-KategoriID ->tblKategori.ID
Tabloları yukarıdaki gibi güncellemenizi tavsiye ederim
tblkitap a sadece id ve kitapadi ni insert edin
MSSQL içi:
Insert into tblKitap (KitapAdi) values (@KitapAdı);
Insert into tblKitapKategori (KitapID ,KategoriID) values (SELECT SCOPE_IDENTITY(),@KategoriID1),(SELECT SCOPE_IDENTITY(),@KategoriID2)....;
MYSQL için:
Insert into tblKitap (KitapAdi) values (@KitapAdı);
Insert into tblKitapKategori (KitapID ,KategoriID) values (LAST_INSERT_ID(),@KategoriID1),(LAST_INSERT_ID(), @KategoriID2)....;
en yapılabiliri bu arkadaşın da dediği gibi bi forla listbox ı dönüp değerleri alman lazım
skype : mhumoglu - 20-07-2018, 16:48:10Haklısınız kitap sekmesinde kategoriyi tutmama gerek olmayabilir zaten birden fazla kategori içeriyor.
Devam eden insert sorgusunun uzunluğunuda yine for dongusu ile yapmam gerekiyor ?Alıntı
Mesala 10 adet kategori varsa buna göre sorguyu uzatmam mı gerekiyor.
Biraz uzun yöntemmiş gibi geldi. Tam otutturamadım kafamda.
for dongusu ile seçilen kategori adedi kadar, sorguyu kod tarafında dondureceğim. Stored procedure 'lerle bunu kısaltmanın bir yöntemi yokmudur acaba.
gibi değil mi ?Alıntı
Teşekkürler.
merthumoglu adlı üyeden alıntı: mesajı görüntüle
(kitap ve kategori illişkisini tutacak alan) bir kitap eklendiği zaman o kitap id si ve kategori id sini kit_kat a eklersin kitap1->korku kitap1->macera tarzında genelde kullanılan mantık budur diğer bi yöntem ise her kategori için bi db oluşturup kitap eklendiği zaman o dblere kitap id eklemek ama bu responsluğu sağlamıyor. Bu söylediklerim SQL databaseler için geçerli nonSQL lerde durum biraz daha farklılaşıyor