Ответы пользователя по тегу MySQL
  • Как сделать выборку в MYSQL группируя один столбец и выбирая кол-во значений другого?

    Эту задачу можно решить в два подхода:
    1. Выясняем, для каких значений id_work выполняется условие наличия хотя бы по одному значению для type из множества (2, 4)
    2. Для найденных значений id_work выбираем полный набор данных для type из множества (2, 4)

    На практике это означает запрос использующий подзапрос для п. 1 и использование inner join дл п. 2:
    SELECT
      T.id
    FROM
      (
        SELECT
          id_work
        FROM
          T
        WHERE
          type IN (2, 4)
        GROUP BY
          id_work
        HAVING
          count(distinct type) = 2
      ) AS filteredIdWork
    INNER JOIN
      T
    ON
      T.id_work = filteredIdWork.id_work
      AND T.type IN (2, 4)
    Ответ написан
    Комментировать
  • Как составить такой SQL запрос?

    Для иерархии глубиной 6 элементов (максимум) подойдёт следующий запрос:
    SELECT
      t1.*
      , count(t2.id) AS count
    FROM
      table AS t1
    INNER JOIN
      table AS t2 on t1.id = t2.parent
    INNER JOIN
      table AS t3 on t2.id = t3.parent
    INNER JOIN
      table AS t4 on t3.id = t4.parent
    INNER JOIN
      table AS t5 on t4.id = t5.parent
    INNER JOIN
      table AS t6 on t5.id = t6.parent
    WHERE
      t1.parent IS NULL
    GROUP BY
      t1.id
    HAVING
      count(t2.id) >= 3
    Ответ написан
    Комментировать