PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 19
phpself Отправлено: 21 Ноября, 2011 - 23:37:15 • Тема: Регулярки, прошу помощи ) • Форум: Регулярные выражения

Ответов: 0
Просмотров: 82
Всем привет. нужно составить регулярку. есть текст к примеру:

Голосеевская ул. 13б, 8/20 эт., 56.2/24/14.3, тихое место, центр, рядом ст.м. &quot;Голосеевская&quot;.от строителей<br> Этаж: 8/23<br> Площадь: 56/24/14<br> <a href="http://arcoreal.ua/835798?fn">http://arcoreal.ua/835798?fn</a> <br><br> ООО "Агентство Арко Недвижимость" (Arco Real Estate) <br> бул. Леси Украинки, 26, оф. 400, Киев, Украина, 01133 <br> Тел/Факс: (044)490-22-66

нужно вытащить из текста этаж/этажность и площадь, а так же улицу.

начал с простого описания:



а вот дальше затык =\ Прошу помощи! Спасибо Улыбка
phpself Отправлено: 22 Сентября, 2011 - 17:11:44 • Тема: оптимизация • Форум: SQL и Архитектура БД

Ответов: 9
Просмотров: 100
caballero пишет:
count по индексу читает быстро - хjтя это тупой оптиvизатор в mysql он должен был сам сообразить взять primary key

astatus здесь индекс попробуй поставить


Спасибо за ответы Улыбка) В принципе производительность хорошая, просто думал что можно еще лучше сделать! Улыбка
phpself Отправлено: 22 Сентября, 2011 - 16:49:31 • Тема: оптимизация • Форум: SQL и Архитектура БД

Ответов: 9
Просмотров: 100
caballero пишет:
проследи чтобы в таблицах было индексы
и count лучше ставить индексное поле всесто *

adrub на это поле индекс поставь


Спасибо, индексы уже где нужно проставлены. Заменил * на индексируемое поле как вы посоветовали. Сразу же протестировал, стало быстрей.

Я в этом запросе использую вложенный запрос. который из этой же таблицы делает выборку по другому параметру. Возможно в этом куске запроса можно что-то изменить ?
phpself Отправлено: 22 Сентября, 2011 - 16:30:55 • Тема: оптимизация • Форум: SQL и Архитектура БД

Ответов: 9
Просмотров: 100
Добрый всем день Улыбка

есть такой запрос

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT COUNT(IF(apremium > 0, 1, NULL)) AS premium_ads,
  3.             COUNT(*) - COUNT(IF(apremium > 0, 1, NULL)) AS ads_in_rub_with_premium,
  4.             COUNT(*) AS ads_in_rub,
  5.             (SELECT COUNT(*) AS number_ads FROM 1ads WHERE astatus > 0) AS ads_in_region
  6. FROM 1ads WHERE astatus > 0 AND adrub = 101
  7.  


как его можно оптимизировать ?
phpself Отправлено: 26 Апреля, 2011 - 12:58:31 • Тема: оператор LIKE • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 41
garvey пишет:
Возможно проблемы с кодировкой. Во всяком случае, приведите пример данных, содержащихся в таблице и возвращаемых данных.


Уже нашел ответ. Решил задачу при помощи REGEXP '^(і|И)' еще нужно не забывать про верхний и нижний регистр конечно. иначе поиск будет не верным.
phpself Отправлено: 26 Апреля, 2011 - 12:43:48 • Тема: оператор LIKE • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 41
Добрый день. Немного запутался. Что нужно. Нужно произвести поиск по первой букве в поле таблицы. Делаю так select * from tbl1 where title LIKE 'А%' теперь задача усложнилась и нужно произвести поиск по первой букве но которое начиналось бы на И(русское) или І(украинское). Делаю так SELECT * FROM tbl1 WHERE title LIKE 'И%' OR title LIKE 'І%' но выводит какую то фигню =) что не так делаю ?
phpself Отправлено: 28 Октября, 2010 - 11:55:59 • Тема: javascript regexp • Форум: JavaScript & VBScript

Ответов: 1
Просмотров: 996
Добрый день. нужно написать регулярное выражение на javascript.

Условия:
1. после: запятой, точки, знака восклицания если есть любая буква без пробела - ошибка.
2. если есть любой буквенной или цифровой символ перед знаком восклицания, то он должен быть один, знак восклицания.
phpself Отправлено: 03 Сентября, 2010 - 16:04:41 • Тема: Помогите с реализацией задачи • Форум: Программирование на PHP

Ответов: 3
Просмотров: 308
Добрый день, у меня есть запрос к БД (спс duk)
PHP:
скопировать код в буфер обмена
  1. SELECT DATE_FORMAT(dtime, '%d-%m-%Y'),
  2. SUM(IF(method=1,amount,0)) AS am_met_1,
  3. SUM(IF(method=1,bonus,0))  AS bonus_met_1,
  4. SUM(IF(method=2,amount,0)) AS am_met_2,
  5. SUM(IF(method=2,bonus,0))  AS bonus_met_2,
  6. SUM(IF(method=3,amount,0)) AS am_met_3,
  7. SUM(IF(method=3,bonus,0))  AS bonus_met_3,
  8. SUM(IF(method=4,amount,0)) AS am_met_4,
  9. SUM(IF(method=4,bonus,0))  AS bonus_met_4,
  10. SUM(amount) AS total_am,
  11. SUM(bonus)  AS total_bon
  12. FROM fn.fn_balance_in
  13. WHERE TO_DAYS('2010-07-01') - TO_DAYS(dtime) <= 30
  14. GROUP BY DATE_FORMAT(dtime, '%Y-%m-%d')  


Который вытягивает из базы, даты, суммы, бонусы, типы(method в БД) платежей и сортирует их в нужном мне порядке.

Типов всего 4: Карточка, Вебмани, Терминал, Счет

как написать функцию на пхп которая бы заполняла несуществующие даты и ставила нули в суммах и бонусах для каждого типа платежей? Пускай будет диапазон даты за месяц.

Вставлять в базу ничего не нужно, нужно работать с выбранными элементами из базы.

Очень прошу вашей помощи!!!
phpself Отправлено: 03 Сентября, 2010 - 13:53:06 • Тема: Помогите с реализацией задачи • Форум: Напишите за меня, пожалуйста

Ответов: 0
Просмотров: 39
Добрый день, у меня есть запрос к БД
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DATE_FORMAT(dtime, '%d-%m-%Y'),
  2. SUM(IF(method=1,amount,0)) AS am_met_1,
  3. SUM(IF(method=1,bonus,0))  AS bonus_met_1,
  4. SUM(IF(method=2,amount,0)) AS am_met_2,
  5. SUM(IF(method=2,bonus,0))  AS bonus_met_2,
  6. SUM(IF(method=3,amount,0)) AS am_met_3,
  7. SUM(IF(method=3,bonus,0))  AS bonus_met_3,
  8. SUM(IF(method=4,amount,0)) AS am_met_4,
  9. SUM(IF(method=4,bonus,0))  AS bonus_met_4,
  10. SUM(amount) AS total_am,
  11. SUM(bonus)  AS total_bon
  12. FROM fn.fn_balance_in
  13. WHERE TO_DAYS('2010-07-01') - TO_DAYS(dtime) <= 30
  14. GROUP BY DATE_FORMAT(dtime, '%Y-%m-%d')


Который вытягивает из базы, даты, суммы, бонусы, типы(method в БД) платежей и сортирует их в нужном мне порядке.

Типов всего 4: Карточка, Вебмани, Терминал, Счет

как написать функцию на пхп которая бы заполняла несуществующие даты и ставила нули в суммах и бонусах для каждого типа платежей? Пускай будет диапазон даты за месяц.

Вставлять в базу ничего не нужно, нужно работать с выбранными элементами из базы.
phpself Отправлено: 02 Сентября, 2010 - 23:22:24 • Тема: Помогите решить задачу по выборке • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 105
для наглядности имг

нужно что бы допустим при выборе диапазона 2010-07-01 по 2010-07-31 отобразилась не только информация с БД но и даты до, после и между данными БД только с нулями так как операций не было в это время
phpself Отправлено: 02 Сентября, 2010 - 23:18:46 • Тема: Помогите решить задачу по выборке • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 105
раскопал ф-ю которая генерит по заданному диапазону даты
PHP:
скопировать код в буфер обмена
  1. function createDateRangeArray($strDateFrom, $strDateTo) {
  2.                     // takes two dates formatted as YYYY-MM-DD and creates an
  3.                     // inclusive array of the dates between the from and to dates.
  4.                     // could test validity of dates here but I'm already doing
  5.                     // that in the main script
  6.  
  7.                     $aryRange = array();
  8.  
  9.                     $iDateFrom = mktime(1, 0, 0, substr($strDateFrom, 5, 2), substr($strDateFrom, 8, 2), substr($strDateFrom, 0, 4));
  10.                     $iDateTo = mktime(1, 0, 0, substr($strDateTo, 5, 2), substr($strDateTo, 8, 2), substr($strDateTo, 0, 4));
  11.  
  12.                     if ($iDateTo >= $iDateFrom) {
  13.                         array_push($aryRange, date('Y-m-d', $iDateFrom)); // first entry
  14.  
  15.                         $i = 0;
  16.                         while ($iDateFrom < $iDateTo) {
  17.                             $iDateFrom+=86400; // add 24 hours
  18.                             array_push($aryRange, date('Y-m-d', $iDateFrom));
  19.                         }
  20.                     }
  21.                     return $aryRange;
  22.                 }


как можно подставить свои значения с запроса mySQL(запрос выше от duk) напротив дат с фу-ии сравнивая даты. Если существует дата в БД то ставить значения ежели нет идем дальше и ставим нули. помогите в этой реализации
phpself Отправлено: 02 Сентября, 2010 - 16:47:46 • Тема: Помогите решить задачу по выборке • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 105
Задача усложнилась, чем ввели меня в ступор. Допустим в примере выше мы выбирали показывать данные за месяц с группировкой по дню. С 1-го по 19 и т.д. число дат нет потому что не было транзакций, как сделать так, что бы недостающие даты добавлялись с нулями ?
phpself Отправлено: 02 Сентября, 2010 - 13:54:15 • Тема: Помогите решить задачу по выборке • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 105
duk пишет:
Кажется понял

PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT dtime, SUM(if(metod=1,amount,0)) as am_met_1, SUM(if(metod=1,bonus,0)) as bonus_met_1, SUM(if(metod=2,amount,0)) as am_met_2, SUM(if(metod=2,bonus,0)) as bonus_met_2
  3. FROM fn.fn_balance_in
  4. WHERE TO_DAYS('2010-07-01') - TO_DAYS(dtime) <= 30
  5. GROUP BY dtime";
  6.  


ну и так далее


скорей всего подошло =) нужно углубляться в сиквел =)

Все хорошо, то что нужно. Спасибо большое!!!
phpself Отправлено: 02 Сентября, 2010 - 13:09:50 • Тема: Помогите решить задачу по выборке • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 105
duk пишет:
мыслей то полно, а вот что именно сделать - неясно
Просили по дням и методу - пжлста.


в том запросе который вы написали получается вывод:

2010-07-19 19:21:02 78.00 18.00
2010-07-20 10:59:55 66.00 14.00
2010-07-27 14:03:00 10.00 2.00
2010-07-28 13:30:57 12.00 4.00
2010-07-28 13:30:57 11.00 5.00
2010-07-28 13:30:57 11.00 3.00
2010-07-29 13:30:57 16.00 6.00

дак вот как сделать так что бы

вместо
2010-07-28 13:30:57 12.00 4.00
2010-07-28 13:30:57 11.00 5.00
2010-07-28 13:30:57 11.00 3.00

было
2010-07-28 12,00|4.00 --- 11.00|5.00 --- 11.00|3.00

ваш запрос, который выше, почти подходит, за исключением повтора даты в разном методе.

уже много чего перепробовал. возможно из за того что голова забита этой проблемой, она не хочет думать =) Как говорится одна голова - хорошо, а две лучше =)
phpself Отправлено: 02 Сентября, 2010 - 12:14:26 • Тема: Помогите решить задачу по выборке • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 105
duk пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT dtime, SUM(amount), SUM(bonus), method
  3. FROM fn.fn_balance_in
  4. WHERE TO_DAYS('2010-07-01') - TO_DAYS(dtime) <= 30
  5. GROUP BY dtime, method";
  6.  


этот код получит статистику по платежам с разбивкой по дате и методу


спасибо, уже лучше, но к сожалению не совсем то. Видимо дальше нужно заниматься обработкой в пыхе...
(Добавление)
Больше мыслей нет как это можно сделать ? +)) прошу помощи

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB