Beispiel #1
0
        public static void cobaInsert()
        {
            //INSERT
            using (var context = new Contoh06Context())
            {
                var std = new Invoice()
                {
                    TransNo   = "trans01",
                    TransDate = DateTime.Now,
                    Items     = new List <InvoiceItem>()
                    {
                        new InvoiceItem
                        {
                            ItemCode = "item01",
                            Qty      = 1
                        },
                        new InvoiceItem
                        {
                            ItemCode = "item02",
                            Qty      = 2
                        }
                    }
                };
                context.Invoices.Add(std);

                var std2 = new Invoice()
                {
                    TransNo   = "trans02",
                    TransDate = DateTime.Now,
                    Items     = new List <InvoiceItem>()
                    {
                        new InvoiceItem
                        {
                            ItemCode = "item01",
                            Qty      = 3
                        },
                        new InvoiceItem
                        {
                            ItemCode = "item02",
                            Qty      = 4
                        }
                    }
                };
                context.Invoices.Add(std2);

                context.SaveChanges();
            }
        }
Beispiel #2
0
        public static void cobaQuery()
        {
            var db = new Contoh06Context();

            //001 Query biasa

            /*
             *  SELECT T0.*
             *  FROM Invoices T0
             */
            var query001 = from T0 in db.Invoices
                           select T0
            ;

            foreach (var invoice in query001)
            {
                Console.WriteLine($"001 -> {invoice.TransNo}");
            }

            //002 TOP N

            /*
             *  SELECT TOP 1  T0.*
             *  FROM Invoices T0
             */
            var query002 = (from T0 in db.Invoices
                            select T0
                            ).Take(1)
            ;

            foreach (var invoice in query002)
            {
                Console.WriteLine($"002 -> {invoice.TransNo}");
            }


            //003 ORDER BY

            /*
             *  SELECT T0.*
             *  FROM Invoices T0
             *  ORDER BY T0.TransNo ASC
             */
            var query003 = from T0 in db.Invoices
                           orderby T0.TransNo ascending  //descending
                           select T0
            ;

            foreach (var invoice in query003)
            {
                Console.WriteLine($"003 -> {invoice.TransNo}");
            }

            //004 WHERE

            /*
             *  SELECT T0.*
             *  FROM Invoices T0
             *  WHERE T0.TransNo='trans02'
             */
            var query004 = from T0 in db.Invoices
                           where T0.TransNo == "trans02"
                           select T0
            ;

            foreach (var invoice in query004)
            {
                Console.WriteLine($"004 -> {invoice.TransNo}");
            }


            //005 TOP-ORDER-WHERE

            /*
             *  SELECT TOP 1 T0.*
             *  FROM Invoices T0
             *  WHERE T0.TransNo='trans02'
             *  ORDER BY T0.TransNo ASC
             *
             */
            var query005 = (from T0 in db.Invoices
                            orderby T0.TransNo ascending
                            where T0.TransNo == "trans02"
                            select T0
                            ).Take(1)
            ;

            foreach (var invoice in query005)
            {
                Console.WriteLine($"005 -> {invoice.TransNo}");
            }

            //006 Custom Column name

            /*
             *  SELECT TOP 1 T0.TransNo AS NomerInvoice
             *  FROM Invoices T0
             *  WHERE T0.TransNo='trans02'
             *  ORDER BY T0.TransNo ASC
             *
             */
            var query006 = (from T0 in db.Invoices
                            orderby T0.TransNo ascending
                            where T0.TransNo == "trans02"
                            select new
            {
                NomerInvoice = T0.TransNo
            }
                            ).Take(1)
            ;

            foreach (var invoice in query006)
            {
                Console.WriteLine($"006 -> {invoice.NomerInvoice}");
            }

            //007 INNER JOIN

            /*
             *  SELECT TOP 1  T0.TransNo AS NomerInvoice, T1.ItemCode AS KodeBarang
             *  FROM Invoices T0
             *  INNER JOIN InvoiceItems T1 ON T0.Id=T1.Id
             *  WHERE TransNo='trans02'
             *  ORDER BY TransNo ASC
             *
             */
            var query007 = (from T0 in db.Invoices
                            join T1 in db.InvoiceItems on T0.Id equals T1.InvoiceId
                            orderby T0.TransNo ascending
                            where T0.TransNo == "trans02"
                            select new
            {
                NomerInvoice = T0.TransNo,
                KodeBarang = T1.ItemCode
            }
                            ).Take(1)
            ;

            foreach (var invoice in query007)
            {
                Console.WriteLine($"007 -> {invoice.NomerInvoice}-{invoice.KodeBarang}");
            }

            //008 LEFT JOIN -- RIGHT JOIN (tidak mendukung dan kudu di akalin dengan left join

            /*
             *  SELECT TOP 1  T0.TransNo AS NomerInvoice, T1.ItemCode AS KodeBarang
             *  FROM Invoices T0
             *  INNER JOIN InvoiceItems T1 ON T0.Id=T1.Id
             *  WHERE TransNo='trans02'
             *  ORDER BY TransNo ASC
             *
             */
            var query008 = (from T0 in db.Invoices
                            join T1 in db.InvoiceItems on T0.Id equals T1.InvoiceId into J01
                            from T1_0 in J01.DefaultIfEmpty()
                            orderby T0.TransNo ascending
                            where T0.TransNo == "trans02"
                            select new
            {
                NomerInvoice = T0.TransNo,
                KodeBarang = T1_0.ItemCode
            }
                            ).Take(1)
            ;

            foreach (var invoice in query008)
            {
                Console.WriteLine($"008 -> {invoice.NomerInvoice}-{invoice.KodeBarang}");
            }

            //009 CROSS JOIN

            /*
             *  SELECT TOP 1000  T0.TransNo AS NomerInvoice, T1.ItemCode AS KodeBarang
             *  FROM Invoices T0
             *  CROSS JOIN InvoiceItems T1
             *  WHERE TransNo='trans02'
             *  ORDER BY TransNo ASC
             *
             */
            var query009 = (from T0 in db.Invoices
                            from T1 in db.InvoiceItems
                            orderby T0.TransNo ascending
                            where T0.TransNo == "trans02"
                            select new
            {
                NomerInvoice = T0.TransNo,
                KodeBarang = T1.ItemCode
            }
                            ).Take(1000)
            ;

            foreach (var invoice in query009)
            {
                Console.WriteLine($"009 -> {invoice.NomerInvoice}-{invoice.KodeBarang}");
            }


            //010 GROUP BY dengan satu table

            /*
             *  SELECT T0.ItemCode AS KodeBarang , SUM(T0.Qty) AS TotalQty
             *  FROM InvoiceItems T0
             *  GROUP BY T0.ItemCode
             *
             */
            var query010 = from T0 in db.InvoiceItems
                           group T0 by T0.ItemCode into GRP
                           select new
            {
                KodeBarang = GRP.Key,
                TotalQty   = GRP.Sum(x => x.Qty)
            }
            ;

            foreach (var invoice in query010)
            {
                Console.WriteLine($"010 -> {invoice.KodeBarang}-{invoice.TotalQty}");
            }

            //011 GROUP BY dengan inner join

            /*
             *  SELECT  T0.TransNo AS NomerInvoice, T1.ItemCode AS KodeBarang, SUM(T1.Qty) AS TotalQty
             *  FROM Invoices T0
             *  INNER JOIN InvoiceItems T1 ON T0.Id=T1.Id
             *  GROUP BY T0.TransNo, T1.ItemCode
             *
             */
            var query011 = from T0 in db.Invoices
                           join T1 in db.InvoiceItems on T0.Id equals T1.InvoiceId
                           group new { T0, T1 } by new { T0.TransNo, T1.ItemCode } into GRP
                select new
            {
                NomerInvoice = GRP.Key.TransNo,
                KodeBarang   = GRP.Key.ItemCode,
                TotalQty     = GRP.Sum(x => x.T1.Qty)
            }
            ;

            foreach (var invoice in query011)
            {
                Console.WriteLine($"011 -> {invoice.NomerInvoice}-{invoice.KodeBarang}-{invoice.TotalQty}");
            }

            //012 HAVING

            /*
             *  SELECT  T0.TransNo AS NomerInvoice, T1.ItemCode AS KodeBarang, SUM(T0.Qty) AS TotalQty
             *  FROM Invoices T0
             *  INNER JOIN InvoiceItems T1 ON T0.Id=T1.Id
             *  GROUP BY T0.TransNo, T1.ItemCode
             *  HAVING  SUM(T0.Qty)>2
             *
             */
            var query012 = from T0 in db.Invoices
                           join T1 in db.InvoiceItems on T0.Id equals T1.InvoiceId
                           group new { T0, T1 } by new { T0.TransNo, T1.ItemCode } into GRP
            where GRP.Sum(x => x.T1.Qty) > 2
            select new
            {
                NomerInvoice = GRP.Key.TransNo,
                KodeBarang   = GRP.Key.ItemCode,
                TotalQty     = GRP.Sum(x => x.T1.Qty)
            }
            ;

            foreach (var invoice in query012)
            {
                Console.WriteLine($"012 -> {invoice.NomerInvoice}-{invoice.KodeBarang}-{invoice.TotalQty}");
            }

            //013 HAVING--WHERE--ORDERBY

            /*
             *  SELECT  T0.TransNo AS NomerInvoice, T1.ItemCode AS KodeBarang, SUM(T1.Qty) AS TotalQty
             *  FROM Invoices T0
             *  INNER JOIN InvoiceItems T1 ON T0.Id=T1.Id
             *  WHERE T0.TransNo='trans02'
             *  GROUP BY T0.TransNo, T1.ItemCode
             *  HAVING  SUM(T1.Qty)>2
             *  ORDER BY T1.ItemCode DESC
             *
             */
            var query013 = (
                from T0 in db.Invoices
                join T1 in db.InvoiceItems on T0.Id equals T1.InvoiceId
                where T0.TransNo == "trans02"
                group new { T0, T1 } by new { T0.TransNo, T1.ItemCode } into GRP
                where GRP.Sum(x => x.T1.Qty) > 2
                orderby GRP.Key.ItemCode descending
                select new
            {
                NomerInvoice = GRP.Key.TransNo,
                KodeBarang = GRP.Key.ItemCode,
                TotalQty = GRP.Sum(x => x.T1.Qty)
            }
                ).Take(2)
                           //kalau di taruh di sini akan jadi sub query
                           //.OrderBy(p => p.KodeBarang )
                           //.OrderByDescending(p => p.KodeBarang)
            ;

            //foreach (var invoice in query013)
            //{
            //    Console.WriteLine($"013 -> {invoice.NomerInvoice}-{invoice.KodeBarang}-{invoice.TotalQty}");
            //}

            //013 HAVING--WHERE--ORDERBY--CASE

            /*
             *  SELECT  T0.TransNo AS NomerInvoice, T1.ItemCode AS KodeBarang, SUM(CASE WHEN T1.Qty<1 THEN 0 ELSE T1.Qty END) AS TotalQty
             *  FROM Invoices T0
             *  INNER JOIN InvoiceItems T1 ON T0.Id=T1.Id
             *  WHERE T0.TransNo='trans02'
             *  GROUP BY T0.TransNo, T1.ItemCode
             *  HAVING  SUM(CASE WHEN T1.Qty<1 THEN 0 ELSE T1.Qty END)>0
             *  ORDER BY T1.ItemCode DESC
             *
             */
            var query014 = (
                from T0 in db.Invoices
                join T1 in db.InvoiceItems on T0.Id equals T1.InvoiceId
                where T0.TransNo == "trans02"
                group new { T0, T1 } by new { T0.TransNo, T1.ItemCode } into GRP
                where GRP.Sum(x => x.T1.Qty < 2 ? 0 : x.T1.Qty) > 0
                orderby GRP.Key.ItemCode descending
                select new
            {
                NomerInvoice = GRP.Key.TransNo,
                KodeBarang = GRP.Key.ItemCode,
                TotalQty = GRP.Sum(x => x.T1.Qty < 2 ? 0 : x.T1.Qty)
            }

                ).Take(2)
            ;

            foreach (var invoice in query014)
            {
                Console.WriteLine($"014 -> {invoice.NomerInvoice}-{invoice.KodeBarang}-{invoice.TotalQty}");
            }

            Console.WriteLine("END YA");
        }