кто-нибудь здесь попытался отфильтровать таблицу, используя поле в отдельной таблице? например, 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";
Надеюсь, кто-то может помочь мне в этом.
Спасибо...
Вы должны использовать 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/ru/join.html.
Это слишком долго для комментария. Он не затрагивает вопрос напрямую.
В коде есть две серьезные ошибки:
FROM
. Всегда используйте правильный явный синтаксис JOIN
. Возможно, вам понадобится LEFT JOIN
, но вы не можете выразить это с помощью запятых.
К тому же:
SELECT DISTINCT
почти никогда не требуется с GROUP BY
.GROUP BY
не имеет всех неагрегированных столбцов.Вы должны работать над написанием чистого запроса. Это может фактически решить вашу основную проблему. Вероятно, проблема связана с значениями параметров, которые передаются.