İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. SDN Forum
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C# listeleme sorunu

darkhill12.02.201315 cevap2.081 görüntüleme
#1
merhaba benim filmler ve oyuncular falan diye tablolarım var ben film detay sayfamda oyuncuları listelemek istiyorum fakat tam bir çözüm bulamadım yardımcıolurmusunuz yani mantıgı nedir örnek olarak nasıl yaparım
Cevaplar
#2
veritabanında film tablosuna oyuncu tablosundaki oyuncu idlerini çekebilirsin. filmler tablosunda atıyorum 20 tane alan oluşturursun. film adı, film id, film yılı vs.den sonra oyuncuid1, oyuncuid2 vs. şeklinde ya da oyuncular diye bir alan oluşturup oyuncuların idlerini aralarında virgüllerle tek bir alana kaydedebilirsin. filmler için oyuncu çekerken ya da oyuncu kaydederken virgüllere göre işlem yaparsın. eyyorlamam bu kadar
darkhill Konuyu açan
#3
Peki Oyuncular tabloma Filmıdbir ,filmıdiki ,filmid3 . . . diye kolonlar açsam bunlardı çagırırken filmdetay Sayfamda Sorguda Where Id=FilmIdbir ,Id=Filmıdiki seklinde yapılabilrmi
#4
Bak dostum filmler ve oyuncular tablon var. Bu tabloların ilişkisi icin atıyorum FilmOyunculari tablosu açıcaksın. Id,FilmId,OyuncuId alanların olacak. Buradan da hangi oyuncu hangi filmde oynamış bileceksin. FilmOyunculari tablosuna joinlerle filmler ve oyuncular tablosunu baglayıp film adını ve oyuncu adlarını gösterebilirsin. Daha sonra FilmOyuncuları tablosuna FilmId li bir sorgu gönderdiginde sadece o filme ait bütün oyuncuları listelersin. Siteni ado.net le mi yapıyosun yoksa entity filan mı kullanıyorsun ?
#5
evet öyle de yapılabilir. benim dediğim de bunun simetriği. sadece aynı şeyi filmler tablosunda yapıyorsun. hangisi daha kolayına gelirse öyle yap. bir oyuncunun oynadığı 50 tane filmi 50 tane kolona koymak yerine bir filmde oynayan 20 tane oyuncuyu 20 tane kolona koymak daha mantıklı. biraz uğraştırabilir ama 20 tane kolonla uğraşmak yerine bir tane kolona oynayan oyuncuların id'lerini aralarında virgül ya da noktalı virgülle yazman daha da mantıklı.

daha önce epey veritabanı tasarlamıştım ama belki buradaki db uzmanları daha mantıklı yöntemler de söyleyebilir :)
darkhill Konuyu açan
#6
Ado.net kullanıyorum da işte o join olayını yapamıyorum msdn de önerdilerde yapamadım o kısmı
#7
darkhill dedi: ↑
Ado.net kullanıyorum da işte o join olayını yapamıyorum msdn de önerdilerde yapamadım o kısmı
tablolarını kolonlarıyla beraber yazsana buraya :)
darkhill Konuyu açan
#8
bu filmler tablombuda oyuncular
#9
Filmler Tablosunda Filmin ID'sinden başka ID düşünülmez (belki YapımcıID olabilir), Oyuncular tablosunda da FilmID,OdulID ve YorumID sahaları olmamalı. Filmler ve Oyuncular tablolarını ilişkisini FilmOyuncu isimli başka bir tabloda tutmalısınız. 1 Filmin 1'den fazla oyuncusu olabilir. Bu tabloda FilmID ve OyuncuID kolonlarında bir filmde oynayan oyuncuları tutabilirsiniz.
İkinci olarak 1 oyuncu 1'den fazla filmde de oynayabilir.
Örnek
Tablo: FilmOyuncu
FilmID OyuncuID
===== ======
1 5
1 12
1 16
:
2 5
2 8
2 11

2 tane film var 5 ID'li oyuncu 2 filmde de oymamış
Join ise (bir filmin oyuncuları)
SELECT * FROM Filmler
INNER JOIN FilmOyuncu on Filmler.ID = FilmOyuncu.FilmID
WHERE FilmOyuncu.FilmID = @ID
oyuncular için (oyuncunun oynadığı Filmler)
SELECT * From Oyuncular
INNER JOIN FilmOyuncu ON Oyuncular.ID=FilmOyuncu.OyuncuID
WHERE FilmOyuncu.OyuncuID=@OyuncuID
darkhill Konuyu açan
#10
işte benim burda anlamadıgım kısım ben filmoyuncu diye bir tablo açtım diyelim burda 1 filme bir oyuncu belirtmicem ben yani bu kısımını anlayamıyorum aralarına virgül koyarakmı diğer oyuncuların Idleri belirticem bir filmde bir oyuncu yok veya bir oyuncu 1 filmde oynamıyo
#11
yukarıda SQL ifadelerini yazdım
#12
darkhill dedi: ↑
işte benim burda anlamadıgım kısım ben filmoyuncu diye bir tablo açtım diyelim burda 1 filme bir oyuncu belirtmicem ben yani bu kısımını anlayamıyorum aralarına virgül koyarakmı diğer oyuncuların Idleri belirticem bir filmde bir oyuncu yok veya bir oyuncu 1 filmde oynamıyo
Hayır virgül koymana gerek yok.

Örnek veriyorum

Inception filmin ID'si 1 olsun

Bu durumda Oyuncular tablonada kayıt ekleyeceksin eklerken ise FilmID kısmına 1 vermen gerekiyorki 1 ID'li filmin Oyuncularına erişebilesin.

Bütün oyuncuları tek kayıtta değil birden fazla kayıtta eklemelisin.
#13
darkhill dedi: ↑
işte benim burda anlamadıgım kısım ben filmoyuncu diye bir tablo açtım diyelim burda 1 filme bir oyuncu belirtmicem ben yani bu kısımını anlayamıyorum aralarına virgül koyarakmı diğer oyuncuların Idleri belirticem bir filmde bir oyuncu yok veya bir oyuncu 1 filmde oynamıyo
3. bir tablo yani FilmOyuncu tablosu olmalı
darkhill Konuyu açan
#14
Tamam FilmOyuncu Tablosunu Oluşturdum Şimdi Ne yapmam Gerekiyor

verdigin sql cümlesini ?
#15
darkhill iyi dinle kardeşim şimdi :)
Filmler
ID | FilmAdi
1 Truva

Oyuncular
ID | OyuncuAdi
1 Brad Pitt
2 Eric Bana

FilmOyuncu
ID | FilmID | OyuncuId }
1 1 1 } -- > Filmoyuncu tablona ilişkileri ver. FilmId ye filmlerden, OyuncuId ye oyunculardan. Id zaten oto
2 1 2 } olarak artıyor. Bunları listeleyecegin sql sorgusunu da aşşağıda yazıyorum.

Select Filmler.Id , FilmAdi,OyuncuAdi FilmOyuncu FO
Left join Filmler F on F.Id=FO.FilmId
Left join Oyuncular O on O.Id=FO.OyuncuId

bu sorgu sana tüm filmleri ve oyuncularını listeler. Bu sorgunun altına Where FO.FilmId = 1 yazarsan sana sadece 1 Id li filmin oyuncularını getirir. Bu açıklamalrala da yapamazsan artık evine gelip ben yazıcam programı :))
darkhill Konuyu açan
#16
çok teşekkür ederim bukadar anlattınız yaptım :)

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.

Reklam