none
Ms Sql Express ve Sql Compact uyumsuzluğu RRS feed

  • Soru

  • Merhaba;

    Sql Server Express üzerinde kullandığım aşağıdaki gibi bir sorgum var ve sorunsuz olarak çalışıyor:

    Sorgu şu şekilde:

    SELECT ID, realname, macnumber, ISNULL((SELECT COUNT(ID) AS Expr1 FROM dbo.errors WHERE (userID = U.ID)), 0) AS errorCount FROM dbo.users AS U

    Bu sorguyu ister C# projemde sorgu olarak, istersemde sql server'da view olarak kullanbiliyorum. Ama ne zaman ki, veritabanımı Sql Compact yapsam, veritabanı yapım aynı olmasına rağmen bir türlü sorgum çalışmıyor. Bunun nedeni hakkında bilgisi olan varsa söyleyebilirmi acaba?

    22 Şubat 2014 Cumartesi 21:32

Yanıtlar

  • SQL compact:

    1. Skalar deger donduren subqueryleri desteklemiyor.
    2. Isnull()'i desteklemiyor. Onun yerine ANSI SQL standardinda olan coalesce() kullanabilirsin.

    Senin subquery skalar deger yerine set dondurerek su sekilde yazilabilirdi:

    SELECT ID, realname, macnumber, coalesce(errorCount,0) as errorCount
    FROM dbo.users AS U
    left join 
    (SELECT userID, COUNT(*) AS errorCount FROM dbo.errors group by userID) err
    on err.userID = U.ID

    ANCAK, neden bu kadar basit bir SQL'i subquery ile karmasiklastiriyorsun? users.ID  users tablosu icin primary key degil mi? Eger oyleyse:

    SELECT ID,realname,macnumber,
    COUNT(errors.userID) AS errorCount 
    FROM users 
    left join errors on (errors.UserID = users.ID)
    group by ID,realname,macnumber

    23 Şubat 2014 Pazar 01:05