PHP.SU

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

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

> Найдено сообщений: 48
Sig Отправлено: 26 Февраля, 2016 - 18:22:34 • Тема: выборка по сериям и куча ещё... • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 50
привёл к человеческому виду
да привильно MySQL
Sig Отправлено: 26 Февраля, 2016 - 16:18:53 • Тема: выборка по сериям и куча ещё... • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 50
я добавил индексы и explain
если есть программы как определить оптимальный индекс для запроса напишите пож-та ?
или почитать хорошо, как их использовать

---------
по запросам что я не так оформил напишите, я всё поправлю
Sig Отправлено: 26 Февраля, 2016 - 13:57:00 • Тема: выборка по сериям и куча ещё... • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 50
задача
1. выбрали товар люстра (variantID = 43) и характеристику его 12 лампочек (variantID = 136)
2. определяем серии (seria_productID) где есть такой товар
3. проверяем есть ли в этой серии ещё бра и торшер (variantID in (3,41)), групируем по сериям, и делаем первые 20 серий (постраничная навигация)
4. добавляем к этим сериям все товары, и делаем сортировку где в начале выводим люстры (variantID = 43)
---
запрос получился очень тормозной................
кто-то знает как оптимизировать ?
----------
Сам зациклился, может кто-то пнёт в каком направлении идти ?
-----------


есть 2 таблицы

filtr_table - таблица
CODE (htmlphp):
скопировать код в буфер обмена
  1. productID       Price   skidka  optionID        variantID       seria_productID option_value
  2. 18883   11950   0       11      0       1782    300
  3. 18883   11950   0       20      0       1782    600
  4. 18883   11950   0       57      0       1782    9
  5. 18883   11950   0       62      1       1782    0
  6. 18883   11950   0       63      2       1782    0
  7. 18883   11950   0       64      43      1782    0
  8. 18883   11950   0       65      44      1782    0
  9. 18883   11950   0       66      136     1782    0
  10. 18883   11950   0       67      5       1782    0
  11. 18883   11950   0       67      6       1782    0
  12. 18883   11950   0       67      7       1782    0
  13. 18883   11950   0       68      19      1782    0
  14. 18883   11950   0       69      45      1782    0
  15. 18883   11950   0       70      46      1782    0
  16. 18883   11950   0       100     935     1782    0



shop_products - таблица
CODE (htmlphp):
скопировать код в буфер обмена
  1. productID       categoryID      name
  2. 18880   439     Люстра на штанге Versailles A9500PL-5CC
  3. 18881   439     Люстра на штанге Versailles A8542LM-6GO
  4. 18882   439     Люстра на штанге Jersey A8543PL-5GO
  5. 18883   439     Люстра на штанге Cloud A8170PL-9AB


индексы


CODE (SQL):
скопировать код в буфер обмена
  1. PRIMARY BTREE
  2. productID
  3. optionID
  4. variantID
  5.  
  6. ihc1    BTREE  
  7. variantID
  8. productID
  9.  
  10. ihc3    BTREE
  11. optionID
  12. seria_productID
  13. variantID








1. определяем серии, товара какой ищем

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT DISTINCT seria_productID
  3.     FROM filtr_table
  4.         WHERE variantID IN (136,43)
  5.             AND seria_productID!=0
  6.         GROUP BY productID
  7.         HAVING count(productID)>=2
  8.  

результат explain
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE filtr_table range ihc1 ihc1 4 \N 22587 Using where; Using temporary; Using filesort


2. добавляем, - определяем, есть ли в этой серии ещё товары с variantID in (3,41), групируем по сериям, показывать первые 20 серий

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT b.seria_productID
  3.     FROM(
  4.         SELECT DISTINCT seria_productID
  5.             FROM filtr_table
  6.                 WHERE variantID IN (136,43)
  7.                     AND seria_productID!=0
  8.                 GROUP BY productID
  9.                 HAVING count(productID)>=2
  10.     ) AS a
  11.     LEFT JOIN filtr_table AS b
  12.         ON (a.seria_productID=b.seria_productID)
  13.         WHERE b.variantID IN (3,41)
  14.             GROUP BY b.seria_productID
  15.             HAVING count(DISTINCT b.variantID)>=2
  16.             ORDER BY b.seria_productID ASC
  17.             LIMIT 20
  18.  

результат explain
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY b range ihc1 ihc1 4 \N 2808 Using where
1 PRIMARY <derived2> ALL \N \N \N \N 531 Using where
2 DERIVED filtr_table range ihc1 ihc1 4 \N 22587 Using where


3. добавляем , - показать все товары по этим сериям, добавить выбранным товарам их описание, сортируем, в начале показывать основной товар с пункта 1

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT DISTINCT d.*
  3.     FROM
  4.         (SELECT b.seria_productID
  5.             FROM(
  6.                 SELECT DISTINCT seria_productID
  7.                     FROM filtr_table
  8.                         WHERE variantID IN (136,43)
  9.                             AND seria_productID!=0
  10.                         GROUP BY productID
  11.                         HAVING count(productID)>=2
  12.         ) AS a
  13.         LEFT JOIN filtr_table AS b
  14.         ON (a.seria_productID=b.seria_productID)
  15.             WHERE b.variantID IN (3,41)
  16.                 GROUP BY b.seria_productID
  17.                 HAVING count(DISTINCT b.variantID)>=2
  18.                 ORDER BY b.seria_productID ASC
  19.                 LIMIT 20
  20.         ) AS a2
  21.         LEFT JOIN filtr_table AS b2
  22.         ON (a2.seria_productID=b2.seria_productID)
  23.         LEFT JOIN shop_products AS d
  24.         ON (b2.productID=d.productID)
  25.                 ORDER BY b2.seria_productID ASC, FIELD (b2.variantID, 43,3,41) DESC
  26.  


результат explain
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL \N \N \N \N 20 Using temporary
1 PRIMARY b2 index \N ihc3 16 \N 325047 Using index
1 PRIMARY d eq_ref PRIMARY PRIMARY 4 dolina.b2.productID 1
2 DERIVED b range ihc1 ihc1 4 \N 2808 Using where
2 DERIVED <derived3> ALL \N \N \N \N 531 Using where
3 DERIVED filtr_table range ihc1 ihc1 4 \N 22587 Using where
Sig Отправлено: 26 Февраля, 2016 - 13:46:41 • Тема: Выбор диапозона с учётом другого столбца • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 42
спасибо всё получилось !
как этой сам пропустил
Sig Отправлено: 20 Февраля, 2016 - 18:18:16 • Тема: Выбор диапозона с учётом другого столбца • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 42
Здравствуйте не знаю как лучше сделать, таблица 50 мегабайт, хочется что б быстрей работало
Кусок ТАБЛИЦЫ

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. ID      |       CAT     |       CAT_2
  3. 1       |       5       |       1000
  4. 2       |       5       |       3000
  5. 3       |       5       |       100
  6. 4       |       5       |       700
  7. 5       |       10      |       1000
  8. 6       |       10      |       1000
  9. 7       |       10      |       1000
  10. 8       |       10      |       100
  11. 9       |       20      |       100
  12. 10      |       20      |       1000
  13. 11      |       20      |       100
  14. 12      |       20      |       100
  15. 13      |       30      |       1000
  16. 14      |       30      |       100
  17. 15      |       30      |       1000
  18. 16      |       30      |       100
  19.  


нужно сделать выборку
при CAT = 5 (CAT_2 > 100 and CAT_2 < 100 ) и при CAT = 30 (CAT_2 > 50 and CAT_2 < 500 )

это можно только через LEFT JOIN сделать ?
можно примерно как это должно выглядисть
Sig Отправлено: 17 Мая, 2014 - 00:56:23 • Тема: Кол-во нужных значеней в массиве • Форум: Вопросы новичков

Ответов: 0
Просмотров: 64
Здравствуйте подскажите
есть массив вида
- индекс
- значения (цифрами)

есть 200 значений, и нужно узнать сколько каждое из них раз употребляется в массиве

я использовал count(array_keys()) - но что-то медленно как по мне

------------
Отдельно вопрос
что быстрей
1. делать 200 запросов таких в базу и узнавать кол-во
2. вывести все значения в массив, и потом работать с ним узнавая кол-во
этот запрос делается на сайта практически каждые 5 секунд
Sig Отправлено: 28 Октября, 2013 - 12:29:21 • Тема: Google Analytics комерция несколко товаров в 1 транзакции • Форум: JavaScript & VBScript

Ответов: 0
Просмотров: 491
Подскажите как поставить, что б была 1 транзакции и к ней несколько товаров можно было добавить
1 товар 1 транзакция работает, а если несколько товаров не знаю как поставить
---------------
Инициализируется плагин эл. торговли:
CODE (javascript):
скопировать код в буфер обмена
  1. ga('require','ecommerce','ecommerce.js');


Добавляется транзакция:
CODE (javascript):
скопировать код в буфер обмена
  1.         ga('ecommerce:addTransaction',{
  2.           'id':'1234',                     // Transaction ID. Required.
  3.           'affiliation':'Acme Clothing',   // Affiliation or store name.
  4.           'revenue':'11.99',               // Grand Total.
  5.           'shipping':'5',                  // Shipping.
  6.           'tax':'1.29'                     // Tax.
  7.         });


Добавляется товар или товары:
CODE (javascript):
скопировать код в буфер обмена
  1.         ga('ecommerce:addItem',{
  2.           'id':'1234',                     // Transaction ID. Required.
  3.           'name':'Fluffy Pink Bunnies',    // Product name. Required.
  4.           'sku':'DD23444',                 // SKU/code.
  5.           'category':'Party Toys',         // Category or variation.
  6.           'price':'11.99',                 // Unit price.
  7.           'quantity':'1'                   // Quantity.
  8.         });


Данные отправляются в analytics:
CODE (javascript):
скопировать код в буфер обмена
  1. ga('ecommerce:send');


B выключается модуль ecommerce":
CODE (javascript):
скопировать код в буфер обмена
  1. ga('ecommerce:clear');
Sig Отправлено: 18 Октября, 2013 - 15:15:20 • Тема: Помогите с установкой Universal Analytics электронная коммерция • Форум: JavaScript & VBScript

Ответов: 0
Просмотров: 523
Здравствуйте, не получается нормально установить электронную комерцию именно для Universal

сейчас присылается только один товар последний, как сделать что б все товары были


CODE (javascript):
скопировать код в буфер обмена
  1. ga('require','ecommerce','ecommerce.js');
  2.  
  3.   ga('ecommerce:addTransaction',{
  4.   'id': $resssss,                     // Transaction ID. Required.
  5.   'affiliation': 'Dolina-Sveta.Ru',   // Affiliation or store name.
  6.   'revenue': $price_googl,               // Grand Total.
  7.   'shipping': '',                  // Shipping.
  8.   'tax': ''                     // Tax.
  9. });
  10. $.each(cart_table_name, function(index, value) {
  11.  
  12. $cart_table_name_value = value;
  13. $cart_table_kolvo_value = cart_table_kolvo[index];
  14. $cart_table_prise = cart_table_prise[index];
  15.     ga('ecommerce:addItem', {
  16.     'id': $resssss,
  17.     'name': $cart_table_name_value,
  18.     'sku': '',
  19.     'category': '',
  20.     'price': $cart_table_prise,
  21.     'quantity': $cart_table_kolvo_value,
  22.     'currency': '' // local currency code.
  23.   });
  24. });
  25.  
  26.  
  27.   ga('ecommerce:send');
  28.  
  29.   ga('ecommerce:clear');
Sig Отправлено: 19 Сентября, 2013 - 11:14:48 • Тема: Cоздать квитанцию к оплате doc • Форум: Вопросы новичков

Ответов: 3
Просмотров: 193
Задача создать квитанцию к оплате
есть готовая в doc
нужно в ней менять телефон, товар...

Решение
как я понял нужно
1. сохранить doc квитанции в xml
2. в нём сделать поиск замену
3. сохранить в doc

Что не получается
1. при сохранении в xml в коде появляется большой кусок текста посередине зашифрованный, что с ним делать ?
2. как сделали поиск замену как сделать сохранение в doc ? чтоб можно было открыть

Я думал должно быть много рабочих примеров, но почему-то не нашёл, если кто-то знает поделитесь ссылкой
Sig Отправлено: 20 Августа, 2013 - 14:47:43 • Тема: вытащить размер из style • Форум: JavaScript & VBScript

Ответов: 4
Просмотров: 737
не срабатывает пишет постоянно "NaN"
как понял потому что прописано .css а данные находятся в style
Sig Отправлено: 20 Августа, 2013 - 11:38:15 • Тема: вытащить размер из style • Форум: JavaScript & VBScript

Ответов: 4
Просмотров: 737
подскажите есть
<div align="left" id="right2" style="top:-327px">

нужно поместить в переменную именно "327" (без минуса)

я сделал но это бред мой......
var filtrvis2222 = parseInt($('#right2').attr("style").replace('px','').replace(' ','').replace('top:','').replace('-','').replace('-',''));
Sig Отправлено: 10 Июля, 2013 - 11:38:53 • Тема: Смарти и скобочки • Форум: Вопросы новичков

Ответов: 2
Просмотров: 114
спасибо всё заработала, буду теперь знать
Sig Отправлено: 10 Июля, 2013 - 09:51:41 • Тема: Смарти и скобочки • Форум: Вопросы новичков

Ответов: 2
Просмотров: 114
Здравствуйте прикручиваю скрипт jQuery Star Rating Plugin кто знает
на движке сайта смарти
нужно ввести {split:4} в класс для работы
<input class="star {split:4}"

пытался ввести через {literal} но не работает, на чистом html успешно работает
Кто знает как поправить можно ?
Sig Отправлено: 24 Марта, 2013 - 18:50:38 • Тема: Плавающий блок высотой больше высоты экрана • Форум: JavaScript & VBScript

Ответов: 1
Просмотров: 865
Есть блок высотой больше высоты экрана браузера. Что приводит что часть блока пропадает всегда снизу.
Кто-то знает готовые решения ?
Интересует как например вконтакте фильтр плавающий.

Сам стал делать, но много глюков получается, думаю может уже есть такое
Sig Отправлено: 21 Марта, 2013 - 23:45:44 • Тема: Помогите с count(*) • Форум: Вопросы новичков

Ответов: 5
Просмотров: 223
посидел почитал про sql
понял что нужно обернуть, ну только правиль но ли это ?
работает то оно, но может есть ещё вариант проще ?

PHP:
скопировать код в буфер обмена
  1. select count(*) (select productID FROM shop_products_opt_val_variants LEFT JOIN shop_product_options_set USING (variantID) LEFT JOIN shop_products USING(productID) WHERE option_value IN ('фен','самсунг') GROUP BY productID HAVING count(1)=2") pa;

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB