За последние 24 часа нас посетили 22495 программистов и 1142 робота. Сейчас ищет 671 программист ...

Запрос из PHP в Access с группировкой по видоизмененному полю

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

Метки:
  1. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Имею рабочий запросец:
    Код (Text):
    1. SELECT RecPart as `Тип оборудования`,
    2. FORMAT((sum(iif(LocCur = 'ready',1,0))+sum(iif(LocCur = 'stock',1,0))+sum(iif(LocCur = 'scrap',1,0))),0) as Всего,
    3. FORMAT(sum(iif(DataRec.RecField = 'ЛБ УПТОиК',iif(LocCur = 'scrap',0,1),0)),0) as Новое,
    4. FORMAT(sum(iif(LocCur = 'ready',iif(DataRec.RecField = 'ЛБ УПТОиК',0,iif(FinTst>Date()-365,1,0)),0)),0) as Готовое,
    5. FORMAT(sum(iif(LocCur = 'stock',iif(DataRec.RecField = 'ЛБ УПТОиК',0,1),iif(LocCur = 'ready',iif(DataRec.RecField = 'ЛБ УПТОиК',0,iif(FinTst<Date()-365,1,0)),0))),0) as `Ремонтный фонд`,
    6. FORMAT(sum(iif(LocCur = 'scrap',1,0))) as `Всего отдефектовано`
    7. FROM (DataWO
    8. INNER JOIN DataRec ON DataWO.RecNum=DataRec.RecNum)
    9. WHERE DataWO.PceType=62 and DataRec.RecCust='ТПП-ПНГ' and DataWO.LocCur<>'shipped' GROUP BY DataWO.RecPart
    И при этом получаю результат:
    upload_2019-1-11_9-20-39.png
    Есть проблема в том что мне нужно выводить группировать не по полному названию эти трансформаторы, а только по номиналу типа 300/3819 или 63/856, без учета того, что до этого номинала написано. Искал разные функции агрегации, химичил, ничего не вышло.

    Как реализовать? Прошу помощи форумчане!
     
  2. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Вычленяй нужную подстроку например при помощи substr или regexp и группируй.
     
  3. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    с аксесовским запросом это не работает. Прбовал Instr, но не выходит. там тоьлко одно условие можно прописать. А мне надо два: при разделителе ' ' и '-'.
     
  4. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Делая так:
    Код (Text):
    1. Mid([RecPart],InStr(1,[RecPart],' ')+1) as `Тип оборудования`
    Я получаю вот так:
    upload_2019-1-11_12-0-43.png
    Но это не подходит, надо получается чтобы фильтровало выводимое по двум условиям. По разделителю ' ' и '-'.
    Но ка кне мучался не работает двойное условие. Даже iif пробовал подключить, все равно не катит.
    Мне получается надо чтобы брало в учет только то что находится после ' ' или '-'. Но как сделать просто хз.
     
  5. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Проще добавить столбец содержащий только нужные данные
     
  6. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Структуру базы менять нельзя. В этом и проблема)))
     
  7. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Решил всё этим вот дерьмом:
    Код (Text):
    1. Mid((Mid([RecPart],InStr(1,[RecPart],' ')+1)),InStr(1,(Mid([RecPart],InStr(1,[RecPart],' ')+1)),'-')+1)
    Уииииииииии