SQL’de INNER, LEFT ve OUTER JOIN farkı


Bu farkı anlamak için şu senaryo üzerinden gidelim (senaryoyu ilk yazan kişi BradC’dir, stackoverflowdan bakmak için tıklayın) .

Bu senaryoyu görselleştirerek daha kolay anlaşılabilir hale getirdim.

Senaryo şöyle:

100 öğrenci var.

50 dolap var.

70′inin dolabı var.

Dolaplardan bazılarını bir kaç öğrenci birden kullanıyor. (40 dolap müşterek)

Bazı dolapları ise kimse kullanmıyor (10 dolap komple boş)

Böyle bir durumda:

Sadece dolabı olan öğrencileri

Tüm öğrencileri (dolabı olanlar dahil)

Tüm dolapları (boşlar dahil)

nasıl listeleriz?

Cevaptaki ifadeler yerine şu çizimi yaptım:

image

Gördüğünüz gibi;

INNER JOIN: Kesişim kümesini verir sadece dolap kullanan öğrencileri döndürür 70 öğrenci gelir.

LEFTJOIN: Hem dolap kullanmayan öğrencileri hem de kullananları döndürür 100 öğrenci döner.

RIGHT JOIN ise boş dolaplar dahil tüm dolapları döndürür.

Daha kompleks JOIN komutları da var. Şurada:

image
Reklamlar

ASP.MVC Yüklenmiş Bir Dosyayı Silmek


public ActionResult TutanakSil(int id)

    {
        var sonuc = "Tutanak Silme Hatası 1";
        try
        {

            Tutanak tut = db.Tutanak.SingleOrDefault(m => m.ID == id);

            //remove from file system- mappath'a dikkat 
            var fullPath = Request.MapPath("~/Dosyalar/"+tut.FileName);
            if (System.IO.File.Exists(fullPath)) { 
                System.IO.File.Delete(fullPath);
                Debug.WriteLine(fullPath + "-Tutanak dosya sisteminden silindi");
            }
            else { 
                Debug.WriteLine(fullPath + "-Tutanak dosyası dosya sisteminden silinemedi");
            }
            //veritabanından silme
            db.Tutanak.Remove(tut);
            db.SaveChanges();

            sonuc = "Tutanak Silindi";
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
            sonuc = "Tutanak silinemdi";
        }

        return Content(sonuc);
    }

ASP.MVC Entity Framework’ta kayıt işlemi


ASP.MVC’de Entity Framework’ta bir veri aşağıdaki gibi tabloya işlenir.

Tutanak tut = new Tutanak();

tut.RelevantTalepID = 3

tut.FileName = "Dosya Adı 1";

db.Tutanak.Add(tut);

db.SaveChanges();

Burada db’nin sonu Context ifadesi ile biten nesne olduğunu Tutanak ifadesinin ise veritabanında tanımlı ve uygulamanızla eşleşmiş obje olduğunu unutmayın.

ASP.MVC Tablolar Arası İlişkiler ve Scaffolding


Bir blogumuz olsun bu blogda BlogPost’lar blogumuzdaki kayıtlar olsun. Her kayda ait sadece bir kategori olabilir.
Bu durumda bir kategoride her zaman birden fazla içerik olabilir. Bu durumda istediğimiz formda blogun başlığı yanında kategori seçmemiz için bir dropdown gerekecektir. Bunu ASP.MVC ile en hızlı şekilde nasıl yapabiliriz?

En kısa yol şudur:

1-Model Classını yaz:

public class BlogPost
{
[Key]

    public int ID { get; set; }
    public string title { get; set; }
    public string entry { get; set; }
    public int CategoryID { get; set; }
    public virtual Category Category { get; set; }

}


public class Category

    [Key]
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
   //virtual'a dikkat
    public virtual IEnumerable BlogPosts { get; set; }

}

2-Projeyi sağ tıkla Add->New Scaffolded Item de. Sonda ise 2. seçeneği (Entity Framework ifadesini içeren) seç. Scaffoldingi bekle

Dropdownu da içeren viewler hazır olacaktır.

Bu arada ViewBag üzerinden dropdown elemanı doldurulmaz diyen üstatlara selam olsun. Visual Studio bile bu iş için ViewBag kullanıyor:

View Tarafı:


@Html.DropDownList("CategoryID", null, htmlAttributes: new { @class = "form-control" })

Controller tarafı:

ViewBag.CategoryID = new SelectList(db.Categories, “CategoryID”, “CategoryName”, blogPost.CategoryID);

Bunun dışında da bazı yöntemler mevcut. Bunlardan biri ile ilgili olarak StackOverFlow’da soru sormuş ve güzel bir cevap almıştım. Okumak için burayı tıklayın

Yaptığımız şey one-to-many tablo ilişkisidir.

Human Friendly ASP.MVC Serie


As a veteran Python programmer, I am used to coding in the clear and lazy way because Python has not red tape and fantastic overwhelming details. Nowadays I have to code with ASP.MVC 5 with Razor, however.  Gradually, I am coding and learning.  First and foremost attribute of I’ve noticed is ASP.MVC requires a lot of red tape. Especially for type conversations makes me angry. Therefore, I decided to post my experiences as a Python Programmer in ASP.MVC on the “human friendly” way. I branded it “Human Friendly ASP.MVC”.  I will share the codes and advices clearly. I am hating the tradition of sharing plethora of code lines. That is makes readers confused. I will use clear-cut style of python. Do not try to execute, dare to learn…

Here is first:

image

Enjoy

WordPress.com'da Blog Oluşturun.

Yukarı ↑