我之前问了一个关于从两个表中提取数据的问题,得到了一个完美的答案,我之前问了一个关于从两个表中提取数据的问题,得到了一个很好的答案,奥利琼斯完美地工作
这是我想通过添加 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 中的每个项目都显示了这一点
如果 table-1-item 没有出现在表 2 中,则为 0 --OR-- 如果 table-1-item 确实出现在表 2 中,则为 1
现在当我添加这一行
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 的记录数量相匹配
我认为这将是一个简单的改变,但它把我搞砸了
谢谢你的时间