2016年2月9日 星期二

iOS SQLite vs Android SQLite

今日在寫 Android 的 SQLite 指令時,發現到一個奇怪的事情。同一句指令在 iOS 的 SQLite 下能順利執行,但在 Android 下卻不行。以下是在 iOS 版本的指令:
SELECT product.*, brand.brandName, category.categoryName FROM product, brand, category WHERE product.status>0 AND product.categoryID=? AND product.brandID=brand.brandID AND product.categoryID=category.categoryID ORDER BY orderNumber DESC, productID ASC
在 Android 下卻搜索不到結果。解決方法是加入「GROUP BY」,像是:
SELECT product.*, brand.brandName, category.categoryName FROM product, brand, category WHERE product.status>0 AND product.categoryID=? AND product.brandID=brand.brandID AND product.categoryID=category.categoryID GROUP BY productID ORDER BY orderNumber DESC, productID ASC
更奇怪的是在常用的 sqlitebrowser 也跟 Android 一樣。那麼,當初 iOS 版為可沒有問題?實在不得而知...。可能這個情況應該用 JOIN 較為合適。

沒有留言: