android - 如何修改从两个 mySQL 表结果中提取的数据

标签 android mysql

我之前问了一个关于从两个表中提取数据的问题,得到了一个完美的答案我之前问了一个关于从两个表中提取数据的问题,并得到了 Ollie Jones 完美的答案

这是新情况 我想通过添加 WHERE 从第一个表中获取某些数据,但现在它失败了,似乎不应该

这个查询在执行这个函数时表现得很好

table 1       table 2

product 1     product 4
product 2     product 2
product 3
product 4


SELECT ifnull( b.number >0, 0 ) purchased
FROM 1androidProducts a
LEFT JOIN (
   SELECT count( * ) number, product
   FROM 1androidSales 
   WHERE udid = '' 
   GROUP BY product
) b 
ON a.appTitle = b.product
ORDER BY a.appTitle
LIMIT 0 , 30

产生这个结果

result 

0
1
0
1

简而言之 表 1 中的每一项都显示了这一点

如果表 1 项没有出现在表二中则为 0 - 或者 - a 1 如果 table-1-item 确实显示在表 2 中

现在当我添加这一行

SELECT ifnull( b.number >0, 0 ) purchased
FROM 1androidProducts a
WHERE a.accountID = 2        <<---------- I added this line 
LEFT JOIN (
   SELECT count( * ) number, product
   FROM 1androidSales 
   WHERE udid = ''
   AND accountID = 2          <<---------- I added this line
   GROUP BY product
) b 
ON a.appTitle = b.product
ORDER BY a.appTitle
LIMIT 0 , 30

现在报错

1064 - 您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 4 行的“LEFT JOIN (SELECT count(*) number, product FROM 1androidSales”附近使用的正确语法

我只是想根据 accountID 获取表 1 的子集,以便与第二个表进行比较。

如果我有这个

         table 1            table 2

accountid =1  product 1     accountid =2  product 4
accountid =1  product 2     accountid =2  product 2
accountid =1  product 3     accountid =2  product 5
accountid =1  product 4
accountid =2  product 1     
accountid =2  product 2
accountid =2  product 3
accountid =2  product 4
accountid =2  product 5

会产生这样的结果

result 

0
1
0
1
1

因此结果记录总数与表一中满足accountID值为2的记录数量相匹配

我以为这会是一个简单的改变,但它让我很困惑

谢谢你的时间

最佳答案

我相信你的第一个 where 子句放在错误的位置,把它放在连接之后:

SELECT ifnull( b.number >0, 0 ) purchased
FROM 1androidProducts a
LEFT JOIN (
   SELECT count( * ) number, product
   FROM 1androidSales 
   WHERE udid = ''
   AND accountID = 2 
   GROUP BY product
) b 
ON a.appTitle = b.product
WHERE a.accountID = 2 --Moved the first where clause
ORDER BY a.appTitle
LIMIT 0 , 30

关于android - 如何修改从两个 mySQL 表结果中提取的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13729427/

相关文章:

java - ArrayList.get(int index) 和 ArrayAdapter.getItem(int position) 方法有什么区别?

Android 手机锁屏时电源键按下事件启动后台服务

php - 如何先按新日期排序然后按过去日期排序?

php - 允许的内存大小为 67108864 字节耗尽

php - 我的 sql 文件上传需要 "if/else"语句

php - CodeIgniter 将 mysql 行转换为对象

java.lang.NoSuchFieldError : PUBLIC_ONLY while using Box api in android in signed build 错误

android - Google Play 服务 - 强制显示权限窗口(授予访问权限)

java - 如何在弹出菜单中动态添加单选按钮?

mysql - 我怎样才能在 MySql 中获取标识列的种子值