Добрый день, Уважаемые форумчане.
Помогите пожалуйста. у меня возникла необходимость преобразования числа в строку. но не переделать переменную типа int в переменную типа string, а переделать число 241 в строку "Двести сорок один".
Не подскажете ли, есть ли какие-то готовые решения(или хотя бы алгоритмы) или нужно придумывать самому?
(SELECT cur FROM fw_currency WHERE fw_currency.id_cur=p.id_cur),
'Наличные',
cur.id_cur,
ss.nal,
ss.beznal,
(100+ss.add_margin)/100,
i.weightv,
ss.fraht,
ss.custom,
ss.pack,
ss.use_weightv,
r.name
) prc,
Weight2(
ss.Weight_Price,
cur.cur,
'Наличные',
ss.nal,
ss.beznal
) weight2,
p.qty,
del.period,
si.descr,
ss.weight_price,
r.name regname,
u.id sup_id,
del.id del_id,
i.item_id,
p.id_prc,
cur.id_cur,
ors.ordered,
ors.sold,
del.del_type
FROM fw_deliveries as del
LEFT JOIN fw_users as u ON (del.id_user=u.id)
LEFT JOIN fw_price as p ON (p.id_sup=u.id)
LEFT JOIN fw_sup_settings as ss ON (ss.id_user=u.id)
LEFT JOIN fw_sup_info AS si ON (si.id_user=u.id)
LEFT JOIN fw_items as i ON (i.item_id=p.id_itm)
LEFT JOIN fw_catalogs as ctlg ON (ctlg.id=i.catalogue_id)
LEFT JOIN fw_clientsrg as crg ON (crg.client_id='2' and crg.dealer_id='83')
LEFT JOIN fw_itemsrg as irg ON (irg.catalogue_id=ctlg.id and irg.supplier_id=ss.id_user)
LEFT JOIN fw_currency as cur ON (cur.id_cur=p.id_cur)
LEFT JOIN fw_regions as r ON (r.id=si.region_id)
LEFT JOIN fw_order_statistic as ors ON (ors.item_id=p.id_itm and ors.sup_id=p.id_sup)
WHERE UPPER(i.number)='MR455003' and ((del.period < '7') OR (del.period >= '7' AND del.period < '16') OR (del.period >= '16' AND del.period <= '22') OR (del.period >= '23' AND del.period <= '45') OR del.period >= '46') and p.status='1' and ctlg.enabled='1'
ORDER BY prc
он выполняется от 30 до 2х минут. мне необходимо его оптимизировать, чтобы он выполнялся не более 2-3х секунд.
на сколько я понимаю, надо разносить JOINы, но я знаю как именно.
на счет кучи одинаковых условий с del.period не обращайте внимания. это условие собирается из 5 разных галок с формы, так что мне проще проверить тупо наличие галки, чем проверять в каких комбинациях эти галки присутствуют.
Господа. прощу помощи.
есть база данных инет-магазина автозапчастей. в ней есть три таблицы.
fw_items - в ней находится информация по деталям. каждая деталь принадлежит одному конкретному каталогу. (id, название, каталожный номер, id каталога, прочее)
fw_matches - в ней находится соответствие названия и ID каталога. (cat_name, cat_id)
pricelist - прайс-лист поставщика, в котором находится информация по деталям и ценам. (поле brend содержит название каталога, к которому принадлежит деталь)
мне нужно из таблички pricelist забрать все детали, которых нет в табличке fw_items.
у меня получилось пока что составить вот такой запрос:
INSERT INTO fw_items (`name`, `number`, `catalogue_id`, `alternative`)
SELECT fr.name, fr.number, m.cat_id, fr.altcode
FROM pricelist fr
LEFT JOIN fw_matches AS m ON (m.cat_name=fr.brend)
LEFT JOIN fw_items AS i ON (i.number=fr.number and i.catalogue_id=m.cat_id)
WHERE (NOT EXISTS (
SELECT a.item_id
FROM fw_items a
WHERE a.item_id=i.item_id))
AND (m.cat_name=fr.brend)
но при использовании такого запроса периодически появляются дубликаты уже имеющихся в таблице деталей.
подскажите пожалуйста, как можно модифицировать запрос, чтобы дубликатов не возникало и детали загружались корректно?
Добрый день, господа.
я сейчас работаю над форумом одним. у меня возникла такая проблема.
есть массив $users=array('user_id' => array(<список тем, где отписался user>))
вот print_r($users):
как видно из результата, для обоих пользователей показывается один и тот же список тем, хотя непосредственно перед пробегом по массиву, его содержание было показано пользователю.
никак не могу понять в чем проблема?? помогите пожалуйста.
заранее благодарен. (Добавление)
проблема решилась сама собой, стоило мне поменять $ut на $tu.
спасибо.
и соотвественно, чтобы быть абсолютно уверенным, что мы берем данные только за текущий месяц текущего года к этому запросу еще надо добавить " && YEAR('date_field' ) = YEAR(NOW())". так?
Господа, помогите пожалуйста.
есть таблица, в таблице есть поле Дата(тип данных Date). мне нужно выбрать из таблицы все записи, даты которых входят в текущий месяц.
например сегодня 02 декабря 2009. мне нужны все данные за декабрь 2009 года.
Если бы запрос выполнился нормально, $q был бы корректным. Покажи строчку, где у тебя mysql_query (Добавление)
Кстати, напиши там mysql_query() or die(mysql_error()) и увидишь ошибку если она есть
Champion, большое спасибо, "or die(mysql_error())" показал, где у меня ошибка закралась.
я использовал строку запроса, обрамленную апострофами, а не двойными кавычками, и у меня названия переменных не обрабатывались при передаче запроса к MySQL серверу.
$q - это указатель на ресурс. Его нужно проинициализировать корректным запросом mysql_query(). Возможно не выполнился запрос, тогда надо проверить его в ПМА.
Привет пишется, потому что функция mysql_num_rows возвращает при ошибке false. А false == 0 - это истинное условие. Кстати, false === 0 - ложное.
ой. прошу прощения. забыл указать еще одну деталь. в данный момент таблица пустая. запрос выполняется(по крайней мере mysql не ругается на него никаким образом), просто выводить из таблицы нечего.
Добрый день.
Чтобы не плодить тем, спрошу здесь.
извините за такой ламерский вопрос, но я не знаю, что делать.
как правильно поставить проверку, что запрос вернул пустой ответ?
если я пробую:
if (mysql_num_rows($q) == 0) {
echo "Привет";
}
то мне выдается варнинг: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
но при этом пишется Привет.
а если я пробую:
if (!isset($q)) {
echo "Привет";
}
то никакого варнинга нет, но и Привета тоже нет.
подскажите пожалуйста, как сделать проверку, чтобы не было варнинга и выводился Привет.