Фильтровать каждый столбец в MySQL - PullRequest
0 голосов
/ 26 марта 2019

У меня сейчас есть база данных с тремя таблицами: equipements и equipements_statistics, которая содержит статистику каждого оборудования и, наконец, статистику, которая содержит статистику всех типов.

Чтобы получить оборудование на фильтре, который я делаюэтот запрос:

SELECT
    *
FROM
    `equipement`
INNER JOIN `equipement_stats` ON `equipement_stats`.`id_equipement` = `equipement`.`id_equipement`
INNER JOIN `stats` ON `stats`.`id_stats` = `equipement_stats`.`id_stats`
WHERE
    `stats`.`id_stats` IN(1068, 1069)
GROUP BY
    `equipement`.`id_equipement`
HAVING
    COUNT(DISTINCT stats.id_stats) = 1
LIMIT 10

Таблицы похожи на это:

equipement

+---------------+-----------------+
| id_equipement | name_equipement |
+---------------+-----------------+
|             1 | one             |
|             2 | two             |
|             3 | three           |
+---------------+-----------------+`

equipement_stats

+---------------+-----------+---------------+
| id_equipement | id_stats  | random_number |
+---------------+-----------+---------------+
| 1             | 2         | 0             |
| 1             | 4         | 0             |
| 1             | 1069      | 1             |
| 1             | 8         | 0             |
| _____________ | _________ | _____________ |
| 2             | 1070      | 2             |
| 2             | 1069      | 3             |
| 2             | 20        | 0             |
| 2             | 40        | 0             |
+---------------+-----------+---------------+

Если статистика 1068 или 1069 Iнужно отфильтровать их по столбцу random_number, но значение random_number может быть разным для 1070 и 1069. Как искать только точные id_stats с точным random_number?

В моем случае, например, я хотел быфильтровать оборудование, имеющее статистику 1070 со значением random_number 2 и статистику 1069 со значением random_number 3 в качестве второй записи.

Спасибо за помощь!

1 Ответ

1 голос
/ 26 марта 2019

Самый простой способ фильтрации кортежей это:

WHERE (equipement_stats.id_stats, equipement_stats.random_number) IN ( (1068,2) , (1069,3) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...