• 20-09-2022, 16:02:22
    #1
    selamlar,
    bir sql sorgusunda yardıma ihtiyacım var destek olursanız çok memnun kalırım.

    elimde stocks, products, branches tabloları var. ürünlerin hangi şubede kaç adet olduğunu öğrenmem gerekiyor. mesela izmir istanbul ve ankara şubeleri var. x üründen izmirde 5 istanbulda 11 ankarada 3 ürün kalmış gibi veri çekmem lazım. (ürünü son girilen yani stockId en son girilen değer kabul ediyorum.)

    *Stocks
    `StockId`
    `ProductId`
    `BranchId`
    `UserId`
    `StockType`
    `StockQyt`

    *products
    `id`
    `user_id`
    `product_name`

    *branches
    `branch_id`
    `branch_name`
  • 20-09-2022, 16:05:53
    #2
    Şöyle bir şey mi arıyorsun:
    SELECT * FROM Stocks WHERE BranchId = 1 order by StockId desc
  • 20-09-2022, 16:09:22
    #3
    v4r1able adlı üyeden alıntı: mesajı görüntüle
    Şöyle bir şey mi arıyorsun:
    SELECT * FROM Stocks WHERE BranchId = 1 order by StockId desc
    hocam daha komplike bişey yani iç içe select kullanmak gibi (inner join biraz geliştirmek lazım)


    SELECT StockQyt,branches.branch_name FROM Stock INNER JOIN branches ON Stock.BranchId=branches.branch_id WHERE Stock.ProductId=132 AND Stock.StockType='ENTER' GROUP BY Stock.BranchId ORDER BY Stock.StockId Desc


    burada ilk kaydı getiriyor son kayıt lazım
  • 20-09-2022, 16:20:16
    #4
    SELECT * FROM branches WHERE id=(SELECT BranchId FROM Stocks WHERE StockId=1)
  • 20-09-2022, 16:26:05
    #5
    Hocam MySQL kullandığınızı varsayıyorum. Anladığım kadarıyla aşağıdaki gibi bir sorgu işinizi görecektir. "ONLY_FULL_GROUP_BY" = `Disabled` olduğunu varsayıyorum.
    select p.ProductName, SUM(s.StockQyt) Quantity,b.branch_name BranchName from Stocks s
    LEFT JOIN branches b ON s.BranchId  = b.branch_id
    LEFT JOIN products p ON s.productId = p.id
    GROUP BY s.StockId,s.BranchId
    ORDER BY s.StockId
  • 20-09-2022, 16:26:18
    #6
    cagatayaykac adlı üyeden alıntı: mesajı görüntüle
    hocam daha komplike bişey yani iç içe select kullanmak gibi (inner join biraz geliştirmek lazım)


    SELECT StockQyt,branches.branch_name FROM Stock INNER JOIN branches ON Stock.BranchId=branches.branch_id WHERE Stock.ProductId=132 AND Stock.StockType='ENTER' GROUP BY Stock.BranchId ORDER BY Stock.StockId Desc


    burada ilk kaydı getiriyor son kayıt lazım
    max fonksiyonu kullanınca çözdüm

    SELECT max(StockId),max(StockQyt),branches.branch_name FROM stock INNER JOIN branches ON stock.BranchId = branches.branch_id WHERE stock.ProductId = 1 AND stock.StockType = 'ENTER' GROUP BY stock.BranchId ORDER BY stock.StockId DESC
    StockQyt için max ekledim şimdi çalıştı istediğin buysa eğer
  • 20-09-2022, 16:49:43
    #7
    v4r1able adlı üyeden alıntı: mesajı görüntüle
    max fonksiyonu kullanınca çözdüm

    SELECT max(StockId),max(StockQyt),branches.branch_name FROM stock INNER JOIN branches ON stock.BranchId = branches.branch_id WHERE stock.ProductId = 1 AND stock.StockType = 'ENTER' GROUP BY stock.BranchId ORDER BY stock.StockId DESC
    StockQyt için max ekledim şimdi çalıştı istediğin buysa eğer
    lancelot adlı üyeden alıntı: mesajı görüntüle
    Hocam MySQL kullandığınızı varsayıyorum. Anladığım kadarıyla aşağıdaki gibi bir sorgu işinizi görecektir. "ONLY_FULL_GROUP_BY" = `Disabled` olduğunu varsayıyorum.
    select p.ProductName, SUM(s.StockQyt) Quantity,b.branch_name BranchName from Stocks s
    LEFT JOIN branches b ON s.BranchId  = b.branch_id
    LEFT JOIN products p ON s.productId = p.id
    GROUP BY s.StockId,s.BranchId
    ORDER BY s.StockId
    oktayc0 adlı üyeden alıntı: mesajı görüntüle
    SELECT * FROM branches WHERE id=(SELECT BranchId FROM Stocks WHERE StockId=1)
    v4r1able adlı üyeden alıntı: mesajı görüntüle
    max fonksiyonu kullanınca çözdüm

    SELECT max(StockId),max(StockQyt),branches.branch_name FROM stock INNER JOIN branches ON stock.BranchId = branches.branch_id WHERE stock.ProductId = 1 AND stock.StockType = 'ENTER' GROUP BY stock.BranchId ORDER BY stock.StockId DESC
    StockQyt için max ekledim şimdi çalıştı istediğin buysa eğer
    lancelot adlı üyeden alıntı: mesajı görüntüle
    Hocam MySQL kullandığınızı varsayıyorum. Anladığım kadarıyla aşağıdaki gibi bir sorgu işinizi görecektir. "ONLY_FULL_GROUP_BY" = `Disabled` olduğunu varsayıyorum.
    select p.ProductName, SUM(s.StockQyt) Quantity,b.branch_name BranchName from Stocks s
    LEFT JOIN branches b ON s.BranchId  = b.branch_id
    LEFT JOIN products p ON s.productId = p.id
    GROUP BY s.StockId,s.BranchId
    ORDER BY s.StockId
    oktayc0 adlı üyeden alıntı: mesajı görüntüle
    SELECT * FROM branches WHERE id=(SELECT BranchId FROM Stocks WHERE StockId=1)



    cevaplar için teşekkür ederim 🖐 amacım tek sorgu ile çözmekti çözemedim, bu yüzden kod kısmında döngü ile 3 sorgu yapmaya karar verdim.