Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySQL Помогите составить запрос

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Открыть новую тему     Написать ответ в эту тему

Vitaly2106

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такое скрипт, который вытягивает данные из таблицы SC_products
 

Код:
<?php
 
function smarty_function_last_products ($params, &$smarty){
  $default_limit = 10;
  $limit = (isset ($params['limit']) && $params['limit'] > 0)? $params['limit'] : $default_limit;
 
  $products = db_phquery_fetch (DBRFETCH_ROW_ALL, 'SELECT `products`.*, `products`.'.LanguagesManager::sql_prepareField('name').' as `name`, `products`.'.LanguagesManager::sql_prepareField('brief_description').' as `brief_description`, `pictures`.`thumbnail` FROM `?#PRODUCTS_TABLE` `products` LEFT JOIN `?#PRODUCT_PICTURES` `pictures` USING (`productID`) WHERE `products`.`enabled` = 1 AND `products`.`categoryID` not in (0,1,10) AND `products`.`parent` not in (556) AND `pictures`.`photoID` = `products`.`default_picture` AND `products`.`in_stock` > 1 ORDER BY `products`.`productID` DESC LIMIT ?', $limit);
 
  foreach ($products as $i => $product){
    $products[$i]['PriceWithUnit'] = show_price ($product['Price']);
  }
 
  if ($products){
    $smarty->assign ('products', $products);
    $smarty->display (DIR_FTPLS.'/last_products.html');
  }
}
?>

 
В этом коде я дописал строчку AND `products`.`categoryID` not in (0,1,10) где указываю ID категорий которые не нужно выводить, но нужно сделать чтобы при этом он учитывал родительские категории.
 
Судя по всему categoryID хранится в таблице products и указывает на принадлежность товара к категории, а вот parent (т.е. родительская категория) в таблице SC_categories, связь между двумя таблицами происходит так:

Код:
select * from sc_products inner join sc_categories on products.categoryID=sc_categories.categoryID

А для фильтрации я так понял добавлять where sc_categories.parent=... ну или not in
 
Подскажите, как правильно прописать это в коде? Я в программирование не силен, пробовал дописывать куски, но скрипт постоянно ругается на ошибки, посмотрите пожалуйста что не так...

Всего записей: 23 | Зарегистр. 14-08-2012 | Отправлено: 03:02 25-11-2013 | Исправлено: Vitaly2106, 03:04 25-11-2013
entelexiya77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята подскажите что неправильного в этой строке?
 

Код:
 
$qr_result = mysql_query('SELECT * FROM  ostatok WHERE Kontragent =' .$Kontragent);
$qr_result = mysql_query('SELECT * FROM  aent_ostatok WHERE Kontragent' =.$Kontragent);
 
 
 
И вместо одинарных кавычек ставил двойные но не работает.




Вам же сказали не дублировать вопросы. Последнее китайское /Cheery/

Всего записей: 73 | Зарегистр. 20-05-2012 | Отправлено: 20:29 20-01-2014 | Исправлено: Cheery, 21:54 20-01-2014
lumb2007

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо удалить значение ячейки для всех повторяющихся значений вместе с оригиналом
 
Дубликаты ищу так

Код:
select t1.*
from table t1
where exists (select *
              from table t2
              where t2.id <> t1.id
              and t2.uri = t1.uri);

 
Обновляться ячейка должна как-то так
Код:
UPDATE table SET uri = ''  WHERE ...

а вот правильно соединить не получается выдает разные ошибки
Например

Код:
UPDATE table SET uri = ''  WHERE (
select t1.*
from table t1
where exists (select *
              from table t2
              where t2.id <> t1.id
              and t2.uri = t1.uri));

выдает ошибку #1241 - Operand should contain 1 column(s)

Код:
UPDATE table SET uri = ''  WHERE id IN (  
select t1.id  
from table t1  
where exists (select *  
              from table t2  
              where t2.id <> t1.id  
              and t2.uri = t1.uri));  

1093 - You can't specify target table 'table' for update in FROM clause
 
Помогите с решением

Всего записей: 165 | Зарегистр. 22-04-2008 | Отправлено: 08:34 29-01-2014 | Исправлено: lumb2007, 08:35 29-01-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lumb2007
 
UPDATE table t1, (SELECT uri FROM table GROUP BY uri HAVING COUNT(*) > 1) t2 SET t1.uri = '' WHERE t2.uri = t1.uri

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 08:51 29-01-2014
lumb2007

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Благодарю,отличное рабочее решение
 
Добавлено:
Как можно сделать update ячейки при совпадении содержимого + слеш:  
имеется 2 ячейки alias и uri
alias=текст1
uri=текст2/
 
Мне надо обновить uri когда
alias=текст
uri=текст/
 
UPDATE table SET uri = '' WHERE 'uri' + '/' = 'alias'; ничего не дало, в общем слеш меня запутал)

Всего записей: 165 | Зарегистр. 22-04-2008 | Отправлено: 08:56 29-01-2014 | Исправлено: lumb2007, 09:34 29-01-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lumb2007

Цитата:
ячейки при совпадении содержимого + слеш

ну содержимое же тут не совпадает - там еще и цифры есть. или о чем вы?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:40 29-01-2014
lumb2007

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
где цифры?
в таблице 2 ячейки alias и uri
Мне надо обновить uri если оно равно alias/
Например
если alias = latvia и uri= latvia/
надо обнулить uri

Всего записей: 165 | Зарегистр. 22-04-2008 | Отправлено: 09:50 29-01-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lumb2007

Цитата:
Мне надо обновить uri если оно равно alias/  

ну так и надо сразу говорить )
 
UPDATE table SET uri = '' WHERE uri = CONCAT(alias, '/')

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:52 29-01-2014
lumb2007

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо)

Всего записей: 165 | Зарегистр. 22-04-2008 | Отправлено: 10:03 29-01-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите составить запрос, чтоб можно было вывести несколько id.
 

Код:
$connect = mysql_query("SELECT `id`, `sections` FROM `catalog` WHERE id = '1' OR id = '3' OR id = '5' OR id = '15' LIMIT 10");
while($catalog = mysql_fetch_object($connect)) ets...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:46 14-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
... WHERE id IN (1,3,5,15) ...

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:40 14-03-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
а можно сделать, чтоб выводило по порядку?
т.е. у меня если номера идут 2 5 3...
то mysql выводит запись с бд 2 3 5, а нужно, чтоб было по очереди 2 5 3

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:31 15-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
а можно сделать, чтоб выводило по порядку?  

нет. введите столбец, определяющий порядок, по нему и сортируйте.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:33 15-03-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Нашел решение, если добавить
 

Код:
... WHERE id IN (3, 12, 1) ... ORDER BY FIELD(id, 3, 12, 1)...

то порядок будет корректным.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:37 15-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Нашел решение, если добавить  

ок, не знал о нем, так как никогда не было необходимости сортировать подобным образом.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:42 15-03-2014
IFKey



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста с запросом.
Есть таблица посещений:
TA_TYPE - приход\уход (Значения 1\2)
EV_DATETIME - дата:время
Так я выбираю статистику посещений за определенный период:
 

Цитата:
    SELECT
       a.EV_DATETIME,
       a.TA_TYPE
    FROM TALOG a, USERS b
    WHERE a.USER_ID = b.USER_ID
    AND b.USER_ID = 7
    AND a.EV_DATETIME > '2014-01-24 00:00:00'
    ORDER BY a.EV_DATETIME DESC

 
Но проблема в том что человек в течении дня может несколько раз ходить туда-сюда, соответственно выбирать надо не все, а только наибольшую дату ухода (a.TA_TYPE = 1) и наименьшую дату прихода (a.TA_TYPE = 2) за каждый день в заданном интервале.

Всего записей: 331 | Зарегистр. 20-03-2007 | Отправлено: 21:47 24-04-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
IFKey
пример
 
SELECT * FROM (SELECT * FROM table WHERE USER_ID = 1 AND DATE(EV_DATETIME) = '2014-01-24' ORDER BY EV_DATETIME DESC LIMIT 1) t1
UNION ALL  
SELECT * FROM (SELECT * FROM table WHERE USER_ID = 1 AND DATE(EV_DATETIME) = '2014-01-24' ORDER BY EV_DATETIME LIMIT 1) t2
 
ps: зачем у вас вторая таблица прицеплена?

Цитата:
  FROM TALOG a, USERS b  
    WHERE a.USER_ID = b.USER_ID  
    AND b.USER_ID = 7
 

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:12 24-04-2014 | Исправлено: Cheery, 22:22 24-04-2014
IFKey



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ps: зачем у вас вторая таблица прицеплена?  

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

Всего записей: 331 | Зарегистр. 20-03-2007 | Отправлено: 22:59 24-04-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
IFKey
я понял это.. просто если не делаете выборки из второй и ID уже задан, зачем ее вообще упоминать в запросе?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:01 24-04-2014
IFKey



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
AND b.USER_ID = 7  

Номер пользователя используется при выводе детальной информации о посещениях.

Всего записей: 331 | Зарегистр. 20-03-2007 | Отправлено: 23:44 24-04-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySQL Помогите составить запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru