Задать вопрос
Ответы пользователя по тегу SQLite
  • Как превратить WHERE в JOIN?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Первый вариант у Вас не работает не из-за вложенности, а из-за того, что в SELECTE выбираете три колонки, а потом этот SELECT пытаетесь использовать в IN, где допускается только одна колонка.
    Вариант с JOIN можно сделать по разному, например так:
    SELECT sum(`Acheck`.`TOTAL`) AS `SUME`,
           strftime('%Y - %m', `Acheck`.`LOGICDATE`) AS `LOGICDATE`
      FROM `Categ`
        JOIN `Menu` ON `Categ`.`SIRF` = `Menu`.`Categ`
        JOIN `ARcheck` ON `Menu`.`SIRF` = `ARcheck`.`SIFR`
        JOIN `Acheck` ON `ARcheck`.`SYS_NUM` = `Acheck`.`SYS_NUM`
      WHERE `Categ`.`SIRF` = 2
      GROUP BY `LOGICDATE`

    Или так:
    SELECT sum(`Acheck`.`TOTAL`) AS `SUME`,
           strftime('%Y - %m', `Acheck`.`LOGICDATE`) AS `LOGICDATE`
      FROM `Acheck`
        JOIN `ARcheck` ON `ARcheck`.`SYS_NUM` = `Acheck`.`SYS_NUM`
        JOIN `Menu` ON `Menu`.`SIRF` = `ARcheck`.`SIFR`
        JOIN `Categ` ON `Categ`.`SIRF` = `Menu`.`Categ`
      WHERE `Categ`.`SIRF` = 2
      GROUP BY `LOGICDATE`

    В любом случае, на данных в sqlfiddle для `Categ`.`SIRF` = 2 будет пустой результат.
    (`Categ`.`SIRF` = 2) => (`Menu`.`SIRF` = 4) => ни одной строки из `ARcheck`
    Ответ написан
    Комментировать