Выборка всех телефонов пользователей из заказов

  • Выборка всех телефонов пользователей из заказов

    Антон Долганин 29 Декабря 2015 14:05 4170
    Решил тут запрос набросать, который выведет все телефоны из всех заказов всех пользователей. При условии, что в профиле пользователя персональный телефон не заполнен.

    Вот такой запрос получился. На выходе массив с ключами = ID пользователя, и значением = телефон.
    $phones = array();
    $res = $DB->query("SELECT V.*, O.`USER_ID`, U.`PERSONAL_PHONE` FROM `b_sale_order_props_value` V
                   LEFT JOIN `b_sale_order_props` P ON (V.`ORDER_PROPS_ID` = P.`ID`)
                   LEFT JOIN `b_sale_order` O ON (V.`ORDER_ID` = O.`ID`)
                   LEFT JOIN `b_user` U ON (O.`USER_ID` = U.`ID`)
                   WHERE P.`CODE` LIKE '%PHONE%' AND  V.`VALUE` <> '' AND  (U.`PERSONAL_PHONE` IS NULL OR U.`PERSONAL_PHONE`='');");
    while ($row = $res->fetch()) {
       $phones[$row['USER_ID']] = $row['VALUE'];
    }


    Проверил на пару сотен тысяч заказов, отрабатывает достаточно шустро.
    Да, запрос предназначался для дальнейшего обновления телефонов в профиле, поэтому такое условие, что в профиле телефон не заполнен. И код свойства содержит в себе в той или иной форме PHONE. Например, CLIENT_PHONE.
ivan panfilov
29 Декабря 2015 18:35
А почему не на новом ядре?

https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2379

веть ваши цитаты даже в этот курс добавили.
Антон Долганин
30 Декабря 2015 4:29
Так привычнее, быстрее :) тем более, скрипт предполагает разовое исполнение.
Кент
18 Февраля 2016 10:51
Антон Долганин, ждет тебя ниж в печень в новосибе за твои слова
"Вам будет легче, если я буду делать задачу 4 часа за 500руб./час, чем сделаю ее за час? :)"
С уважением, 500 рублевщик.