За последние 24 часа нас посетили 22863 программиста и 1234 робота. Сейчас ищут 775 программистов ...

Запрос на выборку из БД! ХЭЛПУЙТЕ!

Тема в разделе "PHP и базы данных", создана пользователем kretsman, 28 дек 2018.

Метки:
  1. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Та же самая история:

    Warning: odbc_execute() [function.odbc-execute]: SQL error: [Microsoft][Драйвер ODBC Microsoft Access] Попытка выполнить запрос, который не включает указанное выражение 'brak' как часть статистической функции или группы., SQL state 37000 in SQLExecute in Z:\home\lepus\www\invneo.php on line 18
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    тогда проверь отрабатывает ли отдельно подзапрос
    $q = "SELECT `RecPart` AS `r`, COUNT(`LocCur`) AS `brak`
    FROM `DataWO`
    WHERE `LocCur` = 'scrap'
    GROUP BY `RecPart`";
     
  3. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Да)))) он отрабатывает:
    upload_2018-12-28_15-41-2.png
     
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    ну хоть что-то
    теперь сделай вот так
    $q = "SELECT `s`.`r`, `s`.`brak` FROM
    (SELECT `RecPart` AS `r`, COUNT(`LocCur`) AS `brak`
    FROM `DataWO`
    WHERE `LocCur` = 'scrap'
    GROUP BY `RecPart`) AS `s`";
     
  5. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    и так отрабатывает
    upload_2018-12-28_15-59-50.png
     
  6. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    кстати только сейчас заметил, что ты отсебятины немного добавляешь)
    прробуем дальше
    $q = "SELECT `d`.`RecPart`, COUNT(`d`.`LocCur`) AS `total`, `s`.`brak`
    FROM `DataWO` AS `d`
    LEFT JOIN (SELECT `RecPart`, COUNT(`LocCur`) AS `brak`
    FROM `DataWO`
    WHERE `PceType` = 61 AND `LocCur` = 'scrap'
    GROUP BY `RecPart`) AS `s` ON `d`.`RecPart` = `s`.`RecPart`
    WHERE `d`.`PceType` = 61 AND `d`.`LocCur` <> 'shipped' GROUP BY `d`.`RecPart`";
    копипасть ничего не меняя
     
  7. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    (((((((((((((( :

    Warning: odbc_execute() [function.odbc-execute]: SQL error: [Microsoft][Драйвер ODBC Microsoft Access] Попытка выполнить запрос, который не включает указанное выражение 'brak' как часть статистической функции или группы., SQL state 37000 in SQLExecute in Z:\home\lepus\www\invneo.php on line 18
     
  8. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    попробуй убери из `s`.`brak` название таблицы оставь только `brak`

    походу тебе надо взять этот запрос и на спец форум по access я хз чё ему в синтаксисе не нравится
     
  9. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Warning: odbc_execute() [function.odbc-execute]: SQL error: [Microsoft][Драйвер ODBC Microsoft Access] Попытка выполнить запрос, который не включает указанное выражение 'brak' как часть статистической функции или группы., SQL state 37000 in SQLExecute in Z:\home\lepus\www\invneo.php on line 18
    --- Добавлено ---
    в любом случае спасибо за желание помочь.
     
  10. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    хоть access устанавливай)))
     
  11. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    мне кажется чт оему не нравится что мы его уже лотгрупирвоав и посчитав и по сути это уже готовое единичное значение и мы его опять собираемся группировать. Вот он нам и пишет что он не является частью функции.

    Может это можно как то решать через программный вывод значений циклом?
     
  12. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @kretsman, в MySQL всё отлично работает
    можешь конечно сделать несколько отдельных запросов типа:
    $q = "SELECT `RecPart`, COUNT(`LocCur`) AS `total`
    FROM `DataWO`
    WHERE `PceType` = 61 AND `LocCur` <> 'shipped' GROUP BY `RecPart`";
    $q = "SELECT `RecPart`, COUNT(`LocCur`) AS `brak`
    FROM `DataWO`
    WHERE `PceType` = 61 AND `LocCur` = 'scrap' AND `LocCur` <> 'shipped'
    GROUP BY `RecPart`";
    и тд, а потом собрать массив на стороне РНР, но этож по-деревенски :-D
     
  13. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    по деревенски это собрать гребанную рабочу БД на аксесе и 7 лет её наполнять...а теперь как говорится что хошь делай но замути запросы которые надо
     
  14. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @kretsman, я бы один раз перелил всё в MySQL и забыл про access как про страшный сон)
     
  15. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    не прокатит в меру определенных деревянных причин , к сожалению.
     
  16. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    В итоге решил вот так:

    SELECT RecPart as `Тип оборудования`,
    FORMAT(-(sum(LocCur = 'ready')+sum(LocCur = 'stock')+sum(LocCur = 'scrap')),0) as Всего,
    FORMAT(-sum(LocCur = 'ready'),0) as Готовое,
    FORMAT(-sum(LocCur = 'stock'),0) as `Ремонтный фонд`,
    FORMAT(-sum(LocCur = 'scrap'),0) as `Всего отдефектовано`
    FROM DataWO WHERE PceType=61 and LocCur<>'shipped' GROUP BY RecPart
    upload_2018-12-29_15-44-27.png

    Осталось только понять как сделать sum() с двойным условием и вывести вниз суммирование по столбцам)))