有人在这里尝试使用单独表格上的字段过滤表吗?例如Table_1包含登录,组,名称字段,Table_2具有登录,数量,利润,open_time,close_time字段。
由于Table_2没有组,我想按组过滤登录,以便查询结果已经过滤。我已经尝试了下面的声明,该声明没有错误,但没有返回任何结果。
"SELECT DISTINCT a.LOGIN, a.GROUP, b.LOGIN, b.SYMBOL,
SUM(b.VOLUME) NetVolume, SUM(b.PROFIT) NetProfit, b.CLOSE_TIME
FROM TABLE_1 a, TABLE_2 b
WHERE b.CLOSE_TIME BETWEEN '"+dateTimePicker1.Value.ToString("yyyy-MM-dd")+"' AND '"+ dateTimePicker1.Value.ToString("yyyy-MM-dd")+"' AND
a.GROUP NOT IN('group_a','group_b') AND
a.LOGIN = b.LOGIN
ORDER BY NetVolume";
我希望有人能帮助我。
...谢谢
答案 0 :(得分:0)
评论太长了。它没有直接解决这个问题。
代码中有两个主要错误:
FROM
子句中使用逗号。 始终使用正确的显式JOIN
语法。您可能需要LEFT JOIN
,但无法用逗号表达。
另外:
SELECT DISTINCT
几乎不需要GROUP BY
。
GROUP BY
没有所有未加聚合的列。您应该编写一个干净的查询。这实际上可能会解决您的潜在问题。问题可能是由于传入的参数值。
答案 1 :(得分:0)
您需要使用INNER JOIN
所以它看起来像
SELECT DISTINCT a.LOGIN, a.GROUP, b.LOGIN, b.SYMBOL,
SUM(b.VOLUME) NetVolume, SUM(b.PROFIT) NetProfit, b.CLOSE_TIME
FROM a INNER JOIN b ON a.LOGIN = b.LOGIN
WHERE b.CLOSE_TIME BETWEEN '"+dateTimePicker1.Value.ToString("yyyy-MM-dd")+"' AND '"+ dateTimePicker1.Value.ToString("yyyy-MM-dd")+"' AND a.GROUP NOT IN('group_a','group_b') AND
ORDER BY NetVolume";
有关MySql中的连接的更多信息,请查看 https://dev.mysql.com/doc/refman/5.7/en/join.html