SELECT DISTINCT B.TYPE_SID, B.ID BANNER_ID, B.WEIGHT BANNER_WEIGHT,
B.SHOWS_FOR_VISITOR, B.FIX_CLICK, B.FIX_SHOW, B.KEYWORDS BANNER_KEYWORDS,
C.ID CONTRACT_ID, C.WEIGHT CONTRACT_WEIGHT, C.KEYWORDS CONTRACT_KEYWORDS
FROM b_adv_type T
INNER JOIN b_adv_banner B ON ( B.ACTIVE='Y' and B.TYPE_SID = T.SID
and B.STATUS_SID = 'PUBLISHED'
and (B.FOR_NEW_GUEST is null or B.FOR_NEW_GUEST='N')
and (ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0)
or ifnull(B.MAX_SHOW_COUNT,0)=0) and (ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0)
or ifnull(B.MAX_CLICK_COUNT,0)=0) and (ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0)
or ifnull(B.MAX_VISITOR_COUNT,0)=0) and (B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_
FROM is null or length(B.DATE_SHOW_FROM)<=0) and (B.DATE_SHOW_TO>=now()
or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0))
INNER JOIN b_adv_banner_2_site BS ON ( BS.BANNER_ID = B.ID and BS.SITE_ID = 'ru')
INNER JOIN b_adv_contract C ON ( C.ID = B.CONTRACT_ID and C.ACTIVE='Y'
and (ifnull(C.MAX_SHOW_COUNT,0)>ifnull(C.SHOW_COUNT,0)
or ifnull(C.MAX_SHOW_COUNT,0)=0) and (ifnull(C.MAX_CLICK_COUNT,0)>ifnull(C.CLICK_COUNT,0)
or ifnull(C.MAX_CLICK_COUNT,0)=0) and (ifnull(C.MAX_VISITOR_COUNT,0)>ifnull(C.VISITOR_COUNT,0)
or ifnull(C.MAX_VISITOR_COUNT,0)=0) and (C.DATE_SHOW_FROM<=now() or C.DATE_SHOW_
FROM is null or length(C.DATE_SHOW_FROM)<=0) and (C.DATE_SHOW_TO>=now()
or C.DATE_SHOW_TO is null or length(C.DATE_SHOW_TO)<=0))
INNER JOIN b_adv_contract_2_site CS ON ( CS.CONTRACT_ID = B.CONTRACT_ID and CS.SITE_ID = 'ru')
INNER JOIN b_adv_contract_2_type CT ON ( CT.CONTRACT_ID = C.ID
and (CT.TYPE_SID = 'ALL' or CT.TYPE_SID = T.SID))
INNER JOIN b_adv_banner_2_weekday BW ON ( BW.BANNER_ID = B.ID
and BW.C_WEEKDAY='SUNDAY' and BW.C_HOUR = '11')
INNER JOIN b_adv_contract_2_weekday CW ON ( CW.CONTRACT_ID = C.ID
and CW.C_WEEKDAY='SUNDAY' and CW.C_HOUR = '11')
LEFT JOIN b_adv_banner_2_group UG1 ON ( (UG1.BANNER_ID = B.ID and UG1.GROUP_ID in (2,1,21)) )
LEFT JOIN b_adv_banner_2_page BP1 ON ( BP1.BANNER_ID = B.ID and BP1.SHOW_ON_PAGE='Y')
LEFT JOIN b_adv_banner_2_page BP2 ON ( BP2.BANNER_ID = B.ID and BP2.SHOW_ON_PAGE='N'
and '/e-store/books/index.php?SECTION_ID=145' like concat(BP2.PAGE, '%'))
LEFT JOIN b_adv_contract_2_page CP1 ON ( CP1.CONTRACT_ID = C.ID and CP1.SHOW_ON_PAGE='Y')
LEFT JOIN b_adv_contract_2_page CP2 ON ( CP2.CONTRACT_ID = C.ID and CP2.SHOW_ON_PAGE='N'
and '/e-store/books/index.php?SECTION_ID=145' like concat(CP2.PAGE, '%'))
LEFT JOIN b_adv_banner_2_stat_adv BA ON BA.BANNER_ID = B.ID
LEFT JOIN b_adv_banner_2_country BC ON BC.BANNER_ID = B.ID WHERE T.ACTIVE = 'Y'
and BP2.ID is null and CP2.ID is null
and (BP1.ID is null or '/e-store/books/index.php?SECTION_ID=145' like concat(BP1.PAGE, '%'))
and (CP1.ID is null or '/e-store/books/index.php?SECTION_ID=145' like concat(CP1.PAGE, '%'))
and (BA.STAT_ADV_ID is null or BA.STAT_ADV_ID='0')
and (BC.COUNTRY_ID is null or BC.COUNTRY_ID='N0')
and ( (B.SHOW_USER_GROUP = 'Y' and UG1.GROUP_ID is not null)
or (B.SHOW_USER_GROUP <> 'Y' and UG1.GROUP_ID is null))
ORDER BY B.TYPE_SID desc, C.ID desc
У Битрикса одна из лучших админок, но внутри полный бардак. Как это работает на больших таблицах?
Например, не понятно зачем делать потенциально числовые поля строковыми: CP1.SHOW_ON_PAGE='Y'
Мы ищем компьютерных инженеров, которые любят решать сложные проблемы.
Позвоните нам по этому номеру сейчас.

Билингвальные (или двуязычные книги) — это одна книга на двух языках, когда или на одной странице текст на одном языке — а на другой на другом (например, русский или английский) или когда разделение идет не по страницам, а по строкам. Чтение билингвальных книг ускоряет изучение английского языка. читать дальше

Пара слов о РХТУ им Д.И.Менделеева, в котором я проучился 6 лет. Про РХТУ обычно пишут следующее: РХТУ — ведущий вуз в системе химико-технологического образования и подготовки кадров для химической промышленности и науки России. бла-бла-бла…
Попробую показать РХТУ изнутри, глазами студента. читать дальше

После посещения тира «Хищник» решил сходить в центральный стрелково-спортивный клуб РОСТО, который находится совсем рядом с моим домом (м. Тушинская). подробнее о тире

На выходных поехали на Иваньковское водохранилище покататься на катамаране.
читать дальше

5 августа в клубе Сквот проводился аукцион. Люди выставляли на продажу всякие креативные вещи и услуги, а вырученные деньги пошли в детский дом г. Петровска. Всего было собрано почти 70 000 руб. До этого проводился online-аукцион на Лепре, на котором я купил поездку на дайвинг. В общей сложности было собрано 200 000 руб.
фотки

Давно собирался сходить в тир, пострелять из боевого оружия. Последний раз стрелял из калашникова на военных сборах в Курске. Нашел в интернете несколько тиров. Выбрал тир «Хищник», который находится недалеко от моего дома. подробнее о тире
- Любая работающая программа уже устарела.
- Любая программа обходится дороже и требует больше времени, чем казалось в начале.
- Если программа полезна, ее обязательно переделывают.
- Если программа бесполезна, ее тщательно документируют.
- Любая программа в конце концов занимает всю доступную память.
- Ценность программы обычно определяется весом выдаваемой ею распечатки.
- Cложность программы обычно растет до тех пор, пока не превысит способности программиста, призванного ее поддерживать.
- Если утилиты, испытанные при инсталяции, работают идеально, все остальные функции будут работать не верно.
- Если входной редактор спроектирован так, чтобы исключить неверный ввод, найдется изобретательный идиот, который изыщет метод ввести разрушительную команду.
- Невежество - единственный язык, которым владеют все программисты.
- Увеличение численности программистов, работающих над проектом, увеличивает сроки его выполнения.
- Небрежно спланированный проект требует в 3 раза больше времени, чем ожидалось, а тщательно спланированный - только в 2.
- В программе всегда есть еще одна ошибка.
- Невозможно создать программу с полной защитой от дураков, ибо дураки крайне изобретательны.
- Если все идет хорошо, вас вскоре ждут серьезные осложнения.
- Если дела идут хуже некуда, вскоре выяснится, что это не так.
- Если кажется, что все в порядке, вы просто что-то просмотрели.
- Тестовые операции и результаты их выполнения должны быть воспроизводимы - они все должны давать одинаковые отказы.
- Вы всегда найдете еще одну ошибку, если еще раз загляните в свою программу.
- Терминал работает лучше, если его включить в сеть.
- Если все не работает, читайте документацию.
- Если вам не понятно какое-то слово в технической документации, игнорируйте его, смысл от этого не пострадает.
- Не важно, много ли вы работаете, вы все равно работаете недостаточно.
- То, чего вы не делаете, всегда важнее того, что вы делаете.
- Всегда оставляйте место для объяснения того, почему ваша программа работает не так как планировалось.
- Не существует ничего невозможного для человека, который не собирается ничего делать сам.
- Если бы строители сооружали здания также, как программисты пишут свои программы, первый же дятел разрушил бы человеческую цивилизацию.
- Программисты действуют рационально, лишь тогда, когда другие способы исчерпаны.

Недалеко от дома построили бассейн. Строили его еще когда я жил в общаге. На день рождения подарили абонемент в этот бассейн. В целом хороший бассейн. Дороговато, но зато близко. подробнее про бассейн
Недавно мне понадобилось перенести информацию из excel-файла в базу данных. Для этого я использовал класс Spreadsheet_Excel_Reader. Это php-класс, который создан для чтения excel-документов. Простой пример ниже иллюстрирует работу класса.
<?php
require_once ('/excel/reader.php'); // подключаем класс
$Excel = new Spreadsheet_Excel_Reader(); // создаем объект
$Excel->setOutputEncoding('cp1251'); // устанавливаем кодировку
$Excel->read('filename.xls'); // открываем файл
$count = $Excel->sheets[0]['numRows']; // узнаем количество строк в 1 листе
// с помощью цикла выводим все ячейки
for ($rowNum = 1; $rowNum <= $count; $rowNum++) {
echo $Excel->sheets[0]['cells'][$rowNum][1]; // 1 столбец
echo $Excel->sheets[0]['cells'][$rowNum][2]; // 2 столбец
echo $Excel->sheets[0]['cells'][$rowNum][3]; // 3 столбец
}
?>
Например, $Excel->sheets[0]['cells'][2][1] обращается к ячейке, которая находится в первом листе, 2 строка, 1 столбец. Если ваши данные находятся в 3 листе нужно писать $Excel->sheets[2] (нумерация начинается с нуля).
Скачать класс Spreadsheet_Excel_Reader
|
|