SELECT url_to, r404 FROM pod_redirect WHERE BINARY REPLACE(url_from,'/ru/','/') = '/konstruktory_kits/developing-constructor_sets-led-space-roboty-transformery-janod-picasso-stem.html' LIMIT 0,1 [0.00047183036804199 sec]
SELECT pod_filter.id,pod_filter.url FROM pod_filter WHERE BINARY pod_filter.url IN ('developing','constructor_sets','led','space','roboty','transformery','janod','picasso','stem') order by url [0.0016739368438721 sec]
SELECT pod_sub_icon.id,pod_sub_icon.url FROM pod_sub_icon WHERE BINARY pod_sub_icon.url IN ('developing','constructor_sets','led','space','roboty','transformery','janod','picasso','stem') order by url [0.001237154006958 sec]
select id,url from pod_cat_brand where BINARY url IN ('developing','constructor_sets','led','space','roboty','transformery','janod','picasso','stem') [0.0020720958709717 sec]
SELECT id, url FROM pod_filter WHERE url IN ('developing','constructor_sets','led','space','roboty','transformery','janod','picasso','stem') [0.0008080005645752 sec]
SELECT id, url FROM pod_sub_icon WHERE url IN ('developing','constructor_sets','led','space','roboty','transformery','janod','picasso','stem') [0.00061297416687012 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.0002741813659668 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 (3297,437,447,446) 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 (3297,437,447,446) AND g.entry=0 AND g.is_active AND g.is_present_all_mods [0.010894060134888 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.00039410591125488 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.00076794624328613 sec]
SELECT g.id /* cats:3297,437,447,446 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (463,466,2223) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (3452,3459,3460) WHERE g.brand_id IN (1664,2553,2610,2615) AND 1 [0.0005640983581543 sec]
CREATE TEMPORARY TABLE temp_brand_counts_6a2ff3771246a ( id INT, gid INT, INDEX idx_id (id), INDEX idx_gid (gid) ) [0.00030088424682617 sec]
INSERT INTO temp_brand_counts_6a2ff3771246a (id, gid) SELECT g.brand_id AS id, g.id AS gid /* cats:3297,437,447,446 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (463,466,2223) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (3452,3459,3460) WHERE 1 UNION SELECT id, null gid FROM pod_cat_category WHERE id in (1664,2553,2610,2615) [0.0020029544830322 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_6a2ff3771246a 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.00069904327392578 sec]
DROP TEMPORARY TABLE IF EXISTS temp_brand_counts_6a2ff3771246a [0.00017905235290527 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:3297,437,447,446 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (463,466,2223) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (3452,3459,3460) WHERE g.brand_id IN (1664,2553,2610,2615) AND g.is_present AND 1 UNION SELECT MIN(go.price) AS min_price, MAX(go.price) AS max_price /* cats:3297,437,447,446 */ 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 (463,466,2223) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (3452,3459,3460) WHERE g.brand_id IN (1664,2553,2610,2615) AND 1 ) A [0.00089788436889648 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:3297,437,447,446 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (463,466,2223) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (3452,3459,3460) WHERE g.brand_id IN (1664,2553,2610,2615) 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.00088000297546387 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5; CREATE TEMPORARY TABLE tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5 ( goods_id INT NOT NULL, filter_id INT NOT NULL, PRIMARY KEY (goods_id, filter_id) ) ENGINE=MEMORY; [0.00025415420532227 sec]
INSERT INTO tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5 (goods_id, filter_id) SELECT DISTINCT t.id AS goods_id, f.id AS filter_id FROM pod_cat_filter cf INNER JOIN pod_filter fm ON cf.filter_id = fm.id AND fm.is_split = 0 AND fm.is_active INNER JOIN pod_good_filter gf USE INDEX (idx_cat_filter_good) ON gf.filter_id = cf.filter_id AND gf.cat_id IN (3297,437,447,446) AND gf.filter_id_value NOT IN (463,466,2223,3452,3459,3460) INNER JOIN pod_filter f ON gf.filter_id_value = f.id AND f.is_active INNER JOIN tmp_base_goods t ON gf.id_good = t.id WHERE cf.category_id = 3297 [0.010499000549316 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5; CREATE TEMPORARY TABLE tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5 ( filter_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00027799606323242 sec]
INSERT IGNORE INTO tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5 (filter_id, count) SELECT p.filter_id, COUNT(*) AS count FROM tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5 p GROUP BY p.filter_id [0.00027203559875488 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_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5 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.00028109550476074 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5 [0.00021505355834961 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377155b5 [0.0001070499420166 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a; CREATE TEMPORARY TABLE tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a ( goods_id INT NOT NULL, filter_id INT NOT NULL, PRIMARY KEY (goods_id, filter_id) ) ENGINE=MEMORY; [0.00017118453979492 sec]
INSERT INTO tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a (goods_id, filter_id) SELECT DISTINCT ts.entry AS goods_id, f.id AS filter_id FROM pod_cat_filter cf INNER JOIN pod_filter fm ON cf.filter_id = fm.id AND fm.is_split = 1 AND fm.is_active INNER JOIN pod_good_filter gf USE INDEX (idx_cat_filter_good) ON gf.filter_id = cf.filter_id AND gf.cat_id IN (3297,437,447,446) AND gf.filter_id_value NOT IN (463,466,2223,3452,3459,3460) INNER JOIN pod_filter f ON gf.filter_id_value = f.id AND f.is_active INNER JOIN tmp_sub_goods ts ON gf.id_good = ts.id WHERE cf.category_id = 3297 [0.00039005279541016 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a; CREATE TEMPORARY TABLE tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a ( filter_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00024104118347168 sec]
INSERT IGNORE INTO tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a (filter_id, count) SELECT p.filter_id, COUNT(*) AS count FROM tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a p GROUP BY p.filter_id [0.00018405914306641 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_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a 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.00017595291137695 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a [0.00015592575073242 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771895a [7.3909759521484E-5 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8; CREATE TEMPORARY TABLE tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 ( goods_id INT NOT NULL, filter_id INT NOT NULL, PRIMARY KEY (goods_id, filter_id) ) ENGINE=MEMORY; [0.00015401840209961 sec]
INSERT INTO tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 (goods_id, filter_id) SELECT DISTINCT t.id AS goods_id, f.id AS filter_id FROM pod_cat_filter cf INNER JOIN pod_filter fm ON cf.filter_id = fm.id AND fm.is_split = 0 AND fm.is_active INNER JOIN pod_good_filter gf USE INDEX (idx_cat_filter_good) ON gf.filter_id = cf.filter_id AND gf.cat_id IN (3297,437,447,446) AND gf.filter_id = 461 INNER JOIN pod_filter f ON gf.filter_id_value = f.id AND f.is_active INNER JOIN tmp_base_goods t ON gf.id_good = t.id WHERE cf.category_id = 3297 [0.0035848617553711 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8; CREATE TEMPORARY TABLE tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 ( filter_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00023484230041504 sec]
INSERT INTO tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 (filter_id, count) SELECT p.filter_id, COUNT(*) AS count FROM tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 p GROUP BY p.filter_id [0.00022983551025391 sec]
INSERT IGNORE INTO tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 (filter_id, count) SELECT pf.id, 0 FROM pod_filter pf LEFT JOIN tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 c ON c.filter_id = pf.id WHERE pf.id in (463,466,2223) AND c.filter_id IS NULL [0.00019121170043945 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_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 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.00022292137145996 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 [0.00018215179443359 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff377194e8 [8.7976455688477E-5 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a; CREATE TEMPORARY TABLE tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a ( goods_id INT NOT NULL, filter_id INT NOT NULL, PRIMARY KEY (goods_id, filter_id) ) ENGINE=MEMORY; [0.0001838207244873 sec]
INSERT INTO tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a (goods_id, filter_id) SELECT DISTINCT t.id AS goods_id, f.id AS filter_id FROM pod_cat_filter cf INNER JOIN pod_filter fm ON cf.filter_id = fm.id AND fm.is_split = 0 AND fm.is_active INNER JOIN pod_good_filter gf USE INDEX (idx_cat_filter_good) ON gf.filter_id = cf.filter_id AND gf.cat_id IN (3297,437,447,446) AND gf.filter_id = 3436 INNER JOIN pod_filter f ON gf.filter_id_value = f.id AND f.is_active INNER JOIN tmp_base_goods t ON gf.id_good = t.id WHERE cf.category_id = 3297 [0.0012080669403076 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a; CREATE TEMPORARY TABLE tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a ( filter_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00020408630371094 sec]
INSERT INTO tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a (filter_id, count) SELECT p.filter_id, COUNT(*) AS count FROM tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a p GROUP BY p.filter_id [0.00021195411682129 sec]
INSERT IGNORE INTO tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a (filter_id, count) SELECT pf.id, 0 FROM pod_filter pf LEFT JOIN tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a c ON c.filter_id = pf.id WHERE pf.id in (3452,3459,3460) AND c.filter_id IS NULL [0.00018310546875 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_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a 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.000244140625 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_pairs_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a [0.00016999244689941 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771ae3a [8.1062316894531E-5 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2; CREATE TEMPORARY TABLE tmp_A_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2 ( entry INT NOT NULL, sub_icon_id INT NOT NULL, PRIMARY KEY (entry, sub_icon_id), INDEX idx_sub_icon_id (sub_icon_id) ) ENGINE=MEMORY; [0.00016498565673828 sec]
INSERT IGNORE INTO tmp_A_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2 (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:3297,437,447,446 */ FROM tmp_base_goods g INNER JOIN pod_good_filter gf0 ON g.id = gf0.id_good AND gf0.filter_id_value in (463,466,2223) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (3452,3459,3460) WHERE g.brand_id IN (1664,2553,2610,2615) AND g.is_present AND 1 UNION SELECT go.id as id, g.id as entry, go.sub_icon_id /* cats:3297,437,447,446 */ 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 (463,466,2223) INNER JOIN pod_good_filter gf1 ON g.id = gf1.id_good AND gf1.filter_id_value in (3452,3459,3460) WHERE g.brand_id IN (1664,2553,2610,2615) AND 1 ) A [0.00053310394287109 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2; CREATE TEMPORARY TABLE tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2 ( sub_icon_id INT NOT NULL PRIMARY KEY, count INT NOT NULL ) ENGINE=MEMORY; [0.00020098686218262 sec]
INSERT IGNORE INTO tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2 (sub_icon_id, count) SELECT sub_icon_id, COUNT(DISTINCT entry) AS count FROM ( SELECT A.entry, A.sub_icon_id FROM tmp_A_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2 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.00024795532226562 sec]
SELECT c.sub_icon_id AS id, c.count, si.entry, si.name AS name, si.url FROM tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2 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.00015401840209961 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_A_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2 [0.00015902519226074 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_counts_2cgo1eorb6r9dimv0s6bu02ci8_6a2ff3771bce2 [7.8916549682617E-5 sec]
DROP TEMPORARY TABLE IF EXISTS tmp_base_goods; DROP TEMPORARY TABLE IF EXISTS tmp_sub_goods [0.0001227855682373 sec]
Низкие цены на Детские конструкторы Janod ... Stem (Жaнoд ... Стeм) – большой выбор, фото. Купить Детские конструкторы Janod ... Stem (Жaнoд ... Стeм) в Киеве и Украине

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

ПЕРЕЙТИ

Детские конструкторы Janod ... Stem