0

このクエリを Sqlite データベース アプリ、つまり「Base.app」(Mac App Store にあります) で実行すると、3 つの結果行が得られます。iOS6 で以下のコードを実行すると、3 行も取得されます。ただし、iOS 5.1 では 1 行のみが返されます。エラーなし。GROUP BY と HAVING を削除すると、iOS6 と DB アプリで 1 行の結果を再現できます。しかし、なぜ iOS5 はこれらを無視するのでしょうか?

SELECT COUNT(Sub.intItemID) AS intNumSubFolders, Items.*, Files.*
FROM Items
LEFT JOIN Items AS Sub ON Sub.intParentID = Items.intItemID AND Sub.intObjectType IN (2, 3, 6)
LEFT JOIN Files ON Files.intItemID = Items.intItemID 
WHERE Items.intParentID= 2905837
GROUP BY Items.intItemID HAVING Items.intItemVersion=MAX(Items.intItemVersion)

私が使用するコードは次のとおりです。

using ( SqliteCommand oCmd = new SqliteCommand ( "SELECT COUNT(Sub.intItemID) AS intNumSubFolders, Items.*, Files.*" +
                                                                " FROM Items" +
                                                                " LEFT JOIN Items AS Sub ON Sub.intParentID = Items.intItemID AND Sub.intObjectType IN (2, 3, 6)" +
                                                                " LEFT JOIN Files ON Files.intItemID = Items.intItemID " +
                                                                " WHERE Items.intParentID=@intItemID" +
                                                                " GROUP BY Items.intItemID HAVING Items.intItemVersion=MAX(Items.intItemVersion)", oConn ) )
                {
                    oCmd.Parameters.AddWithValue ( "@intItemID", iID );
                    using ( var oReader = oCmd.ExecuteReader (  ) )
                    {
                        while ( oReader.Read (  ) )
                        {
                            // getting here only once
                        }
                        oReader.Close ();
                    }
                }

誰かがなぜこれが起こるのか説明できますか? iOS5で確認済み。iOS6では期待通りに動作しています。

4

1 に答える 1

0

iOSバージョンチェックを実行することで、最終的に「修正」しました。5.x の場合、2 つのクエリを実行し、結果をコードで結合します。良くありませんが、働いています。とにかく、全ユーザーの 90% が iOS 6.x を使用しています。

于 2013-02-21T11:34:04.737 に答える