SELECT url_to, r404 FROM pod_redirect WHERE BINARY REPLACE(url_from,'/ru/','/') = '/bodi/blue-red-interlock-ds.html' LIMIT 0,1 [0.00029110908508301 sec]
SELECT pod_filter.id,pod_filter.url FROM pod_filter WHERE BINARY pod_filter.url IN ('blue','red','interlock','ds') order by url [0.0016629695892334 sec]
SELECT pod_sub_icon.id,pod_sub_icon.url FROM pod_sub_icon WHERE BINARY pod_sub_icon.url IN ('blue','red','interlock','ds') order by url [0.0011680126190186 sec]
select id,url from pod_cat_brand where BINARY url IN ('blue','red','interlock','ds') [0.0019140243530273 sec]
SELECT id, url FROM pod_filter WHERE url IN ('blue','red','interlock','ds') [0.00073099136352539 sec]
SELECT id, url FROM pod_sub_icon WHERE url IN ('blue','red','interlock','ds') [0.00063204765319824 sec]
SELECT f.id, mf.id as mf_id, mf.is_split FROM pod_filter f INNER JOIN pod_filter mf ON f.entry = mf.id WHERE f.id in (23,335,24) and f.is_active AND mf.is_active ORDER BY mf.id, f.id [0.00035715103149414 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_base_goods; CREATE TEMPORARY TABLE tmp_base_goods ( id INT NOT NULL PRIMARY KEY, brand_id INT, price DECIMAL(10,2), old_price DECIMAL(10,2), ordr INT, is_present TINYINT(1), sub_icon_id INT, fast_delivery TINYINT(1), is_new TINYINT(1), is_sale TINYINT(1), KEY idx_brand (brand_id) ) ENGINE=MEMORY [0.00035595893859863 sec]
INSERT INTO tmp_base_goods (id, brand_id, price, old_price, ordr, is_present, sub_icon_id, fast_delivery, is_new, is_sale) SELECT g.id, g.brand_id, g.price, g.old_price, g.ordr, g.is_present, g.sub_icon_id, g.fast_delivery, g.is_new, g.is_sale FROM pod_cat_good g WHERE g.cat_id IN (218) AND g.entry=0 AND g.is_active AND g.is_present_all_mods UNION SELECT g.id, g.brand_id, g.price, g.old_price, g.ordr, g.is_present, g.sub_icon_id, g.fast_delivery, g.is_new, g.is_sale FROM pod_cat_good g INNER JOIN pod_dop_cat_category dc ON dc.good_id = g.id WHERE dc.dop_cat_id IN (218) AND g.entry=0 AND g.is_active AND g.is_present_all_mods [0.26795506477356 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_sub_goods; CREATE TEMPORARY TABLE tmp_sub_goods ( id INT NOT NULL PRIMARY KEY, entry INT NOT NULL, price DECIMAL(10,2), old_price DECIMAL(10,2), sub_icon_id INT, is_present TINYINT(1), fast_delivery TINYINT(1), is_new TINYINT(1), is_sale TINYINT(1), KEY idx_entry (entry) ) ENGINE=MEMORY [0.00040721893310547 sec]
INSERT INTO tmp_sub_goods (id, entry, price, old_price, sub_icon_id, is_present, fast_delivery, is_new, is_sale) SELECT go.id, go.entry, go.price, go.old_price, go.sub_icon_id, go.is_present, go.fast_delivery, go.is_new, go.is_sale FROM pod_cat_good go INNER JOIN tmp_base_goods t ON go.entry = t.id WHERE go.is_active AND go.is_present [0.007159948348999 sec]
SELECT g.id /* cats:218 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND 1 [0.016309976577759 sec]
CREATE TEMPORARY TABLE temp_brand_counts_6a2af5c67fb06 ( id INT, gid INT, INDEX idx_id (id), INDEX idx_gid (gid) ) [0.00097084045410156 sec]
INSERT INTO temp_brand_counts_6a2af5c67fb06 (id, gid) SELECT g.brand_id AS id, g.id AS gid /* cats:218 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE 1 UNION SELECT id, null gid FROM pod_cat_category WHERE id in (1579) [0.015688896179199 sec]
SELECT b.id, b.name AS name, pc.name AS country, b.country_id, b.image_icon, b.url, b.ordr, pc.code, COALESCE(tc.count, 0) as count FROM pod_cat_brand b INNER JOIN ( SELECT id, COUNT(gid) as count FROM temp_brand_counts_6a2af5c67fb06 GROUP BY id HAVING COUNT(gid) > 0 ) tc ON b.id = tc.id LEFT JOIN pod_country pc ON (pc.id = b.country_id AND pc.is_active = 1) WHERE b.is_active = '1' ORDER BY b.ordr [0.00066184997558594 sec]
DROP TEMPORARY TABLE IF EXISTS temp_brand_counts_6a2af5c67fb06 [0.00023198127746582 sec]
SELECT MIN(min_price) AS min_price, MAX(max_price) AS max_price FROM ( SELECT MIN(g.price) AS min_price, MAX(g.price) AS max_price /* cats:218 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND g.is_present AND 1 UNION SELECT MIN(go.price) AS min_price, MAX(go.price) AS max_price /* cats:218 */ FROM tmp_sub_goods go INNER JOIN tmp_base_goods g ON go.entry = g.id INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND 1 ) A [0.0009009838104248 sec]
SELECT g.id,if(g.is_present and g.price >= '0' and g.price <= '99999',least(g.price,ifnull(min(pcg.price),g.price)),ifnull(min(pcg.price),g.price)) min_sort_price , if(g.is_present and g.price >= '0' and g.price <= '99999',greatest(g.price,ifnull(max(pcg.price),g.price)),ifnull(max(pcg.price),g.price)) max_sort_price FROM ( SELECT g.id /* cats:218 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND 1 ) a INNER JOIN pod_cat_good g ON a.id = g.id LEFT JOIN pod_cat_good pcg ON pcg.entry=g.id and pcg.is_present=1 and pcg.is_present=1 and pcg.price >= '0' and pcg.price <= '99999' GROUP BY g.id ORDER BY g.ordr desc LIMIT 0, 32 [0.00089097023010254 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c687615; CREATE TEMPORARY TABLE tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c687615 ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=MEMORY; [0.00042986869812012 sec]
INSERT INTO tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c687615 (id) SELECT A.id FROM ( SELECT g.id /* cats:218 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND 1 ) A [0.00065898895263672 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c687615; CREATE TEMPORARY TABLE tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c687615 ( goods_id INT NOT NULL, filter_id INT NOT NULL, PRIMARY KEY (goods_id, filter_id) ) ENGINE=MEMORY; [0.00038313865661621 sec]
INSERT INTO tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c687615 (goods_id, filter_id) SELECT DISTINCT A.id AS goods_id, f.id AS filter_id FROM tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c687615 A INNER JOIN pod_good_filter gf ON A.id = gf.id_good AND gf.filter_id_value NOT IN (23,24,335) INNER JOIN pod_cat_filter cf ON gf.filter_id = cf.filter_id AND cf.category_id = 218 INNER JOIN pod_filter fm ON gf.filter_id = fm.id AND fm.is_split = 0 AND fm.is_active INNER JOIN pod_filter f ON gf.filter_id_value = f.id AND f.is_active [0.0076389312744141 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c687615; CREATE TEMPORARY TABLE tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c687615 ( filter_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00040197372436523 sec]
INSERT IGNORE INTO tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c687615 (filter_id, count) SELECT p.filter_id, COUNT(*) AS count FROM tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c687615 p GROUP BY p.filter_id [0.00029087066650391 sec]
SELECT c.filter_id, c.count, f.entry, f.name AS name, f.url, f.ord, fm.name AS mname, fm.url AS murl, fm.ord AS mord FROM tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c687615 c INNER JOIN pod_filter f ON c.filter_id = f.id INNER JOIN pod_filter fm ON f.entry = fm.id ORDER BY fm.ord DESC, f.ord DESC, c.filter_id [0.00030398368835449 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c687615 [0.00029301643371582 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c687615 [0.00012898445129395 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c687615 [0.00011897087097168 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68a498; CREATE TEMPORARY TABLE tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 ( id INT NOT NULL, entry INT NOT NULL, PRIMARY KEY (id), KEY idx_entry (entry) ) ENGINE=MEMORY; [0.00030899047851562 sec]
INSERT INTO tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 (id, entry) SELECT A.id, A.entry FROM ( SELECT g.id as id, g.id as entry /* cats:218 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND g.is_present AND 1 UNION SELECT go.id as id, g.id as entry /* cats:218 */ FROM tmp_sub_goods go INNER JOIN tmp_base_goods g ON go.entry = g.id INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND 1 ) A [0.00096011161804199 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68a498; CREATE TEMPORARY TABLE tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 ( goods_id INT NOT NULL, filter_id INT NOT NULL, PRIMARY KEY (goods_id, filter_id) ) ENGINE=MEMORY; [0.00041604042053223 sec]
INSERT INTO tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 (goods_id, filter_id) SELECT DISTINCT A.entry AS goods_id, f.id AS filter_id FROM tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 A INNER JOIN pod_good_filter gf ON A.id = gf.id_good AND gf.filter_id_value NOT IN (23,24,335) INNER JOIN pod_cat_filter cf ON gf.filter_id = cf.filter_id AND cf.category_id = 218 INNER JOIN pod_filter fm ON gf.filter_id = fm.id AND fm.is_split = 1 AND fm.is_active INNER JOIN pod_filter f ON gf.filter_id_value = f.id AND f.is_active [0.00067806243896484 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68a498; CREATE TEMPORARY TABLE tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 ( filter_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00037717819213867 sec]
INSERT IGNORE INTO tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 (filter_id, count) SELECT p.filter_id, COUNT(*) AS count FROM tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 p GROUP BY p.filter_id [0.00032401084899902 sec]
SELECT c.filter_id, c.count, f.entry, f.name AS name, f.url, f.ord, fm.name AS mname, fm.url AS murl, fm.ord AS mord FROM tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 c INNER JOIN pod_filter f ON c.filter_id = f.id INNER JOIN pod_filter fm ON f.entry = fm.id ORDER BY fm.ord DESC, f.ord DESC, c.filter_id [0.00033903121948242 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 [0.00026702880859375 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 [0.00013494491577148 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68a498 [0.00017809867858887 sec]
SELECT f.id, mf.id as mf_id, mf.is_split FROM pod_filter f INNER JOIN pod_filter mf ON f.entry = mf.id WHERE f.id in (23,24) and f.is_active AND mf.is_active ORDER BY mf.id, f.id [0.00051498413085938 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68c190; CREATE TEMPORARY TABLE tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=MEMORY; [0.00036191940307617 sec]
INSERT INTO tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 (id) SELECT A.id FROM ( SELECT g.id /* cats:218 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) WHERE g.brand_id IN (1579) AND 1 ) A [0.00052309036254883 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68c190; CREATE TEMPORARY TABLE tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 ( goods_id INT NOT NULL, filter_id INT NOT NULL, PRIMARY KEY (goods_id, filter_id) ) ENGINE=MEMORY; [0.0003352165222168 sec]
INSERT INTO tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 (goods_id, filter_id) SELECT DISTINCT A.id AS goods_id, f.id AS filter_id FROM tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 A INNER JOIN pod_good_filter gf ON A.id = gf.id_good AND gf.filter_id = 122 INNER JOIN pod_filter fm ON gf.filter_id = fm.id AND fm.is_split = 0 AND fm.is_active INNER JOIN pod_filter f ON gf.filter_id_value = f.id AND f.is_active [0.0070099830627441 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68c190; CREATE TEMPORARY TABLE tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 ( filter_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00045895576477051 sec]
INSERT INTO tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 (filter_id, count) SELECT p.filter_id, COUNT(*) AS count FROM tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 p GROUP BY p.filter_id [0.00039792060852051 sec]
INSERT IGNORE INTO tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 (filter_id, count) SELECT pf.id, 0 FROM pod_filter pf LEFT JOIN tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 c ON c.filter_id = pf.id WHERE pf.id in (335) AND c.filter_id IS NULL [0.00029706954956055 sec]
SELECT c.filter_id, c.count, f.entry, f.name AS name, f.url, f.ord, fm.name AS mname, fm.url AS murl, fm.ord AS mord FROM tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 c INNER JOIN pod_filter f ON c.filter_id = f.id INNER JOIN pod_filter fm ON f.entry = fm.id ORDER BY fm.ord DESC, f.ord DESC, c.filter_id [0.0004119873046875 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 [0.00033712387084961 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 [0.0001380443572998 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68c190 [0.00013399124145508 sec]
SELECT f.id as filter_id, 0 as count, f.entry, f.name, f.url, f.ord, fm.name as mname, fm.url as murl, fm.ord as mord FROM pod_filter f INNER JOIN pod_filter fm ON f.entry = fm.id WHERE f.id = 24 AND f.is_active AND fm.is_active [0.00055193901062012 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a; CREATE TEMPORARY TABLE tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a ( entry INT NOT NULL, sub_icon_id INT NOT NULL, PRIMARY KEY (entry, sub_icon_id) ) ENGINE=MEMORY; [0.00042414665222168 sec]
INSERT IGNORE INTO tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a (entry, sub_icon_id) SELECT DISTINCT A.entry, A.sub_icon_id FROM ( SELECT g.id as id, g.id as entry, g.sub_icon_id /* cats:218 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND g.is_present AND 1 UNION SELECT go.id as id, g.id as entry, go.sub_icon_id /* cats:218 */ FROM tmp_sub_goods go INNER JOIN tmp_base_goods g ON go.entry = g.id INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (23,24) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (335) WHERE g.brand_id IN (1579) AND 1 ) A [0.00092101097106934 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a; CREATE TEMPORARY TABLE tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a ( sub_icon_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00033402442932129 sec]
INSERT IGNORE INTO tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a (sub_icon_id, count) SELECT sub_icon_id, COUNT(DISTINCT entry) AS count FROM ( SELECT A.entry, A.sub_icon_id FROM tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a A INNER JOIN pod_sub_icon si ON A.sub_icon_id = si.id AND si.is_active_filter = 1 ) AA GROUP BY sub_icon_id [0.00041890144348145 sec]
SELECT c.sub_icon_id AS id, c.count, si.entry, si.name AS name, si.url FROM tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a c INNER JOIN pod_sub_icon si ON c.sub_icon_id = si.id AND si.is_active_filter = 1 ORDER BY si.ordr, si.name [0.0002751350402832 sec]
----------------------------- SELECT DISTINCT A.id AS goods_id, f.id AS filter_id FROM tmp_base_goods A STRAIGHT_JOIN pod_good_filter gf USE INDEX (id_good) ON gf.id_good = A.id INNER JOIN pod_cat_filter cf ON gf.filter_id = cf.filter_id AND cf.category_id = 3 INNER JOIN pod_filter fm ON gf.filter_id = fm.id AND fm.is_split = 0 AND fm.is_active INNER JOIN pod_filter f ON gf.filter_id_value = f.id AND f.is_active; [0.034763097763062 sec]
----------------------------- DROP TEMPORARY TABLE IF EXISTS tmp_A_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a [0.00034093856811523 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_e8napesukvv2ubk428hvsbseei_6a2af5c68f71a [0.0001678466796875 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_base_goods; DROP TEMPORARY TABLE IF EXISTS tmp_sub_goods [0.00029492378234863 sec]
Низкие цены на Боди для новорожденных D&S (Д&С) в интернет-магазине «Подушка». Купить Боди для новорожденных D&S в Киеве и Украине

DEVELOPMENT🌷СКИДКИ ДО 70%

ПЕРЕЙТИ

Боди для новорожденных D&S