Фильтр 2 MySQL Таблицы

0

кто-нибудь здесь попытался отфильтровать таблицу, используя поле в отдельной таблице? например, 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
    Общий комментарий: Вы объединяете вместе свой запрос, который может открыть возможность внедрения SQL. Попробуйте использовать подготовленные заявления.
  • 0
    Я в порядке с этим, потому что это внутренняя программа, написанная на vb.net
Теги:

2 ответа

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/ru/join.html.

0

Это слишком долго для комментария. Он не затрагивает вопрос напрямую.

В коде есть две серьезные ошибки:

  1. Никогда не используйте запятые в предложении FROM. Всегда используйте правильный явный синтаксис JOIN.
  2. Используйте параметры для передачи значений в запрос.

Возможно, вам понадобится LEFT JOIN, но вы не можете выразить это с помощью запятых.

К тому же:

  • SELECT DISTINCT почти никогда не требуется с GROUP BY.
  • GROUP BY не имеет всех неагрегированных столбцов.

Вы должны работать над написанием чистого запроса. Это может фактически решить вашу основную проблему. Вероятно, проблема связана с значениями параметров, которые передаются.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню