Добрый утро, знающие господа! Помогите составить запрос к БД, никак не приходит в голову.
Ситуация такая, есть две таблицы, первая:
SQL |
watch_id firm_name date_create 1 Слава 10.01.99 2 Полет 11.01.00 |
SQL |
watch_id param_id param_value 1 1 1 1 2 0 1 3 0 1 4 1 1 5 1000 2 1 0 2 2 1 2 3 1 2 4 0 2 5 2000 |
SQL |
SELECT t1.id_w,t1.firm_w,t1.ref_w,t1.sex_w,t1.mech_w,t1 .mat_w1,t1.mat_bras,t1.glass,t1.ph5,COUNT(*) FROM watch_records t1 JOIN (SELECT t2.watch_id FROM watch_param t2 WHERE (t2.param_id,t2.param_value) IN ((1,1),(4,1)) OR (t2.param_id=5 AND t2.param_value<2000) GROUP BY t2.watch_id HAVING COUNT(*)=1) t3 ON (t1.id_w=t3.watch_id) WHERE t1.mech_w='Механические' AND t1.form_w='0' GROUP BY t1.id_w LIMIT 0, 10 |
SQL |
select набор_нужных_параметров_первой_таблицы from watch_records where watch_id in (select watch_id from watch_param where param_id=1 or param_id=5 or param_id=6 group by watch_id) |
SQL |
...watch_id in (select watch_id from watch_param where param_id in (1,5,6) group by watch_id) |
SQL |
select набор_нужных_параметров_первой_таблицы from watch_records where watch_id in (select watch_id from watch_param where (param_id=1 AND param_value=1) AND (param_id=5 AND param_value=1) AND (param_id=6 AND param_value<1000) group by watch_id) |
Цитата (vedmed @ 7.06.2009 - 12:42) |
Не мог бы полный запрос привести? |
SQL |
select набор_нужных_параметров_первой_таблицы from watch_records where watch_id in (select watch_id from watch_param where param_id=1 or param_id=5 or param_id=6 group by watch_id) |
SQL |
select набор_нужных_параметров_первой_таблицы from watch_records where watch_id in (select watch_id from watch_param where param_id=1 or param_id=5 or param_id=6 group by watch_id) |
Цитата (vedmed @ 7.06.2009 - 14:38) |
Пустой запрос получается, по нему ничего не находит. |
Цитата (vedmed @ 7.06.2009 - 14:38) |
Но мне нужно условие во втором запросе, допустим чтобы параметр с param_id=1 имел param_value=1, param_id=5 - param_value=0, a param_id=6 - param_value<2000 |
SQL |
where watch_id in (select watch_id from watch_param where (param_id=1 and para_value=1) or (param_id=5 and param_value=0) or (param_id=6 and param_value < 2000) group by watch_id) |
SQL |
select w1.watch_id from watch_param w1 left join watch_param w2 on w1.watch_id = w2.watch_id left join watch_param w3 on w1.watch_id = w3.watch_id where w1.param_id=1 and w1.param_value=1 and w2.param_id=5 and w2.param_value=2 and w3.param_id=6 and w3.param_value<2000 |
SQL |
SELECT t1.id_w,t1.firm_w,t1.ref_w,t1.sex_w,t1.mech_w,t1.mat_w1,t1.mat_bras,t1.glass ,t1.ph6,COUNT(*) FROM watch_records t1 JOIN (SELECT t2.watch_id FROM watch_param t2 WHERE (t2.param_id,t2.param_value) IN ((17,0)) GROUP BY t2.watch_id HAVING COUNT(*)=1) t3 ON (t1.id_w=t3.watch_id) WHERE (param_id=95 AND param_value>1000) AND t1.mech_w='Кварцев ые' AND t1.sex_w='0' AND t1.form_w='0' AND t1.mat_w1='Золото' GROUP BY t1.id_w LIMIT 0, 10 |
Цитата (vedmed @ 7.06.2009 - 22:27) |
Поэтому делать таблицу с таким количеством столбиков не рационально. |
SQL |
SELECT t1.id_w,t1.firm_w FROM watch_records t1 WHERE t1.id_w IN ( SELECT watch_id FROM watch_param WHERE (param_id,param_value) IN ((17,1),(38,1)) AND watch_id IN (SELECT watch_id FROM watch_param WHERE param_id = 20 AND param_value BETWEEN 10 AND 100)); |
Цитата (Sylex @ 18.06.2009 - 10:45) |
по-моему этот запрос не должен ни одной записи возвращать |
Цитата (Sylex @ 18.06.2009 - 14:45) |
param_id = 17, 38 и 20 по-моему этот запрос не должен ни одной записи возвращать |
SQL |
(SELECT distinct watch_id FROM watch_param WHERE param_id = 20 AND param_value BETWEEN 10 AND 100) |
SQL |
SELECT id_w,form_w FROM watch_records WHERE id_w IN (1,2,3,4,5) |
SQL |
GROUP BY watch_id HAVING COUNT(*)=2 |
Цитата (glock18 @ 18.06.2009 - 18:02) |
советую использовать group by вместо distinct |
Цитата (sergeiss @ 18.06.2009 - 14:22) |
А вот отсюда поподробнее, плз! |
Цитата (glock18 @ 18.06.2009 - 19:59) |
Однако, все же поправлю тебя, потому что DISTINCT - частный случай GROUP BY. я вообще distinct с определенных пор не использую, потому что он достаточно ущербен - по сути эквивалентен GROUP BY по всем полям в SELECT. в принципе, и в выше приведенном запросе это может повлиять ненужным образом. |
SQL |
SELECT DISTINCT ON (location) location, time, report FROM weather_reports ORDER BY location, time DESC; |
SQL |
SELECT t1.id_w,t1.firm_w FROM watch_records t1 WHERE t1.id_w IN ( SELECT watch_id FROM watch_param WHERE ( (param_id,param_value) IN ((17,1),(38,1)) ) OR ( param_id = 20 AND param_value BETWEEN 10 AND 100) ); |
Цитата (sergeiss @ 18.06.2009 - 16:16) |
Потому что в Постгре есть дополнительные возможности работы с distinct. Вот пример из хэлпа: |
Цитата (sergeiss @ 18.06.2009 - 16:16) |
Выбрать 3 поля, но уникальным должно быть только одно из них. Часть данных будет утеряна, конечно. Но в каких-то случаях это может быть и не принципиально. Например, нам нужно выбрать по одной уникальной точке (как в примере), вне зависимости от времени и информации о точке. А теперь вопрос: сделаешь это же через GROUP BY? wink.gif |
SQL |
SELECT DISTINCT ON (location) location, time, report FROM weather_reports ORDER BY location, time DESC; |
SQL |
SELECT location, time, report FROM weather_reports GROUP BY location ORDER BY location, time DESC; |
SQL |
SELECT location, time, report FROM weather_reports GROUP BY location ORDER BY location, time DESC; |
Код |
ERROR: column "weather_reports.time" must appear in the GROUP BY clause or be used in an aggregate function |
SQL |
SELECT t1.id_w,t1.firm_w FROM watch_records t1 WHERE t1.id_w IN (SELECT watch_id total FROM watch_param WHERE (param_id,param_value) IN ((17,1),(38,1)) AND watch_id IN (SELECT watch_id FROM watch_param WHERE param_id = 20 AND param_value BETWEEN 10 AND 100) GROUP BY watch_id HAVING COUNT(*) >=2 ) AND t1.sex_w='0' AND t1.form_w='0' LIMIT 0, 10; |
Цитата ("SQL_Manual") |
outer_expr IN (SELECT inner_expr FROM ... WHERE subquery_where) MySQL evaluates queries “from outside to inside.” That is, it first obtains the value of the outer expression outer_expr, and then runs the subquery and captures the rows that it produces. |
SQL |
SELECT `w`.`watch_id`, `w`.`firm_name` FROM `params` AS `p` LEFT JOIN `watch` AS `w` ON `p`.`watch_id` = `w`.`watch_id` WHERE (`p`.`param_id` = 1 AND `p`.`param_value` = 1) OR (`p`.`param_id` = 2 AND `p`.`param_value` = 0) OR (`p`.`param_id` = 3 AND `p`.`param_value` = 0) OR (`p`.`param_id` = 4 AND `p`.`param_value` = 1) OR (`p`.`param_id` = 5 AND `p`.`param_value` < 2000) |
Цитата |
1 Слава 1 Слава 1 Слава 1 Слава 1 Слава 2 Полет |
SQL |
SELECT `w`.`watch_id`, `w`.`firm_name`, COUNT(`w`.`watch_id`) FROM `params` AS `p` LEFT JOIN `watch` AS `w` ON `p`.`watch_id` = `w`.`watch_id` WHERE (`p`.`param_id` = 1 AND `p`.`param_value` = 1) OR (`p`.`param_id` = 2 AND `p`.`param_value` = 0) OR (`p`.`param_id` = 3 AND `p`.`param_value` = 0) OR (`p`.`param_id` = 4 AND `p`.`param_value` = 1) OR (`p`.`param_id` = 5 AND `p`.`param_value` < 2000) GROUP BY `p`.`watch_id` |
Цитата |
1 Слава 5 2 Полет 1 |
SQL |
SELECT `w`.`watch_id`, `w`.`firm_name` FROM `params` AS `p` LEFT JOIN `watch` AS `w` ON `p`.`watch_id` = `w`.`watch_id` WHERE (`p`.`param_id` = 1 AND `p`.`param_value` = 1) OR (`p`.`param_id` = 2 AND `p`.`param_value` = 0) OR (`p`.`param_id` = 3 AND `p`.`param_value` = 0) OR (`p`.`param_id` = 4 AND `p`.`param_value` = 1) OR (`p`.`param_id` = 5 AND `p`.`param_value` < 2000) GROUP BY `p`.`watch_id` HAVING COUNT(`w`.`watch_id`) = 5 |
SQL |
-- -- Структура таблицы `params` -- CREATE TABLE IF NOT EXISTS `params` ( `watch_id` smallint(5) unsigned NOT NULL, `param_id` tinyint(3) unsigned NOT NULL, `param_value` smallint(5) unsigned NOT NULL, UNIQUE KEY `watch_id` (`watch_id`,`param_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Дамп данных таблицы `params` -- INSERT INTO `params` (`watch_id`, `param_id`, `param_value`) VALUES (1, 1, 1), (1, 2, 0), (1, 3, 0), (1, 4, 1), (1, 5, 1000), (2, 1, 1), (2, 2, 1), (2, 3, 1), (2, 4, 0), (2, 5, 2000); -- -------------------------------------------------------- -- -- Структура таблицы `watch` -- CREATE TABLE IF NOT EXISTS `watch` ( `watch_id` smallint(5) unsigned NOT NULL auto_increment, `firm_name` varchar(100) NOT NULL, `date_create` varchar(8) NOT NULL, PRIMARY KEY (`watch_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; -- -- Дамп данных таблицы `watch` -- INSERT INTO `watch` (`watch_id`, `firm_name`, `date_create`) VALUES (1, 'Слава', '10.01.99'), (2, 'Полет', '11.01.00'); |
Цитата (vedmed @ 18.06.2009 - 22:54) |
А по запросу ничего сказать не можешь? Тут не IN, тут GROUP BY все портит, а без него запрос не полный... |
Цитата (Alchemist @ 19.06.2009 - 00:18) |
Уж сколько раз я просил sergeiss'a: "Ну не пиши ты подзапросы в IN условиях, не учи людей плохому !" |
Цитата (glock18 @ 19.06.2009 - 05:31) |
А лично я понял требование по-другому Там нужно обязательно, чтобы больше одного параметра удовлетворило. Приведенный пример - только 1 любой. Сейчас vedmed придет и скажет чего он хотел. По-моему, я задачу понял совершенно отличным образом от остальных. |
Цитата (glock18 @ 19.06.2009 - 09:31) |
По-моему, я задачу понял совершенно отличным образом от остальных. |
SQL |
SELECT w.id_w, w.firm_w FROM watch_records AS w LEFT JOIN watch_param AS p ON (w.id_w = p.watch_id) WHERE (p.param_id = 17 AND p.param_value = 1) OR (p.param_id = 38 AND p.param_value = 1) OR (p.param_id = 20 AND p.param_value < 60) GROUP BY p.watch_id HAVING COUNT(p.watch_id) = 3 LIMIT 1, 10 |
Цитата (sergeiss @ 19.06.2009 - 07:54) |
В случае использования IN мы сначала находим полный перечень уникальных значений (подчёркиваю - уникальных), после чего проверяем, есть ли среди них то, что нам надо. |
Цитата (Alchemist @ 18.06.2009 - 22:18) |
outer_expr IN (SELECT inner_expr FROM ... WHERE subquery_where) MySQL evaluates queries “from outside to inside.” That is, it first obtains the value of the outer expression outer_expr, and then runs the subquery and captures the rows that it produces. |
SQL |
SELECT COUNT(*) FROM watch_records t1 LEFT JOIN watch_param t2 ON (t1.id_w=t2.watch_id) WHERE (t2.param_id=20 AND t2.param_value > 0) GROUP BY (t2.watch_id) HAVING COUNT(t2.watch_id)=1 |
SQL |
COUNT(*) 1 1 1 1 1 |
SQL |
SELECT COUNT(*) FROM watch_records t1 LEFT JOIN watch_param t2 ON (t1.id_w=t2.watch_id) WHERE (t2.param_id=20 AND t2.param_value > 0) OR (t2.param_id=19 AND t2.param_value =1) GROUP BY (t2.watch_id) HAVING COUNT(t2.watch_id)=2 |
Цитата |
HAVING COUNT(t2.watch_id)=2 |
SQL |
SELECT SUM(COUNT(*)) FROM watch_records t1 LEFT JOIN watch_param t2 ON (t1.id_w=t2.watch_id) WHERE (t2.param_id=20 AND t2.param_value > 0) OR (t2.param_id=19 AND t2.param_value =1) GROUP BY (t2.watch_id) HAVING COUNT(t2.watch_id)=2 |
SQL |
SELECT SQL_CALC_FOUND_ROWS * FROM watch_records t1 LEFT JOIN watch_param t2 ON (t1.id_w=t2.watch_id) WHERE (t2.param_id=20 AND t2.param_value > 0) OR (t2.param_id=19 AND t2.param_value =1) GROUP BY (t2.watch_id) HAVING COUNT(t2.watch_id)=2; SELECT FOUND_ROWS(); |
Цитата (kirik @ 24.06.2009 - 15:46) | ||
Что-то не до конца понял, что именно нужно.. Если нужно посчитать сколько всего часов вернул запрос, то mysql_num_rows() в помощь, а если нужно посчитать кол-во часов для того, чтобы определиться сколько страниц выводить, то SQL_CALC_FOUND_ROWS поможет:
|
Цитата (glock18 @ 24.06.2009 - 14:26) |
kirik, ну даешь |
SQL |
SELECT firm_w,COUNT(*) FROM watch_records GROUP BY firm_w |
SQL |
SELECT t1.firm_w,COUNT(*) FROM watch_records t1 LEFT JOIN watch_param t2 ON (t1.id_w=t2.watch_id) WHERE (t2.param_id=72 AND param_value='0') OR (t2.param_id=95 AND t2.param_value BETWEEN 1000 AND 2000) OR (t2.param_id=96 AND t2.param_value=1) GROUP BY t1.firm_w HAVING COUNT(t1.firm_w) >=3; |
Цитата (vedmed @ 28.06.2009 - 05:11) |
У тебя нет идей как можно здесь поступить? |
SQL |
SELECT `g`.`firm_w`, COUNT(*) AS `num` FROM ( SELECT t1.firm_w FROM watch_records t1 LEFT JOIN watch_param t2 ON (t1.id_w=t2.watch_id) WHERE (t2.param_id=72 AND param_value='0') OR (t2.param_id=95 AND t2.param_value BETWEEN 1000 AND 2000) OR (t2.param_id=96 AND t2.param_value=1) GROUP BY t1.firm_w HAVING COUNT(t1.firm_w) >=3 ) AS `g` GROUP BY `g`.`firm_w` |
SQL |
SET GLOBAL query_cache_type=1; |
SQL |
SELECT SQL_CACHE `g`.`firm_w`, COUNT(*) AS `num` FROM ( SELECT t1.firm_w FROM watch_records t1 LEFT JOIN watch_param t2 ON (t1.id_w=t2.watch_id) WHERE (t2.param_id=72 AND param_value='0') OR (t2.param_id=95 AND t2.param_value BETWEEN 1000 AND 2000) OR (t2.param_id=96 AND t2.param_value=1) GROUP BY t1.firm_w HAVING COUNT(t1.firm_w) >=3 ) AS `g` GROUP BY `g`.`firm_w` |
Цитата (glock18 @ 29.06.2009 - 07:52) |
а, ну да. только я по правде говоря не уверен, что ты правильно понимаешь кэширование на стороне mysql сервера. он, если не ошибаюсь, тоже просто запоминает результат запроса. |
SQL |
DELIMITER $$ DROP PROCEDURE IF EXISTS `your_db`.`your_sp` $$ CREATE PROCEDURE `your_sp`(IN param1_in VARCHAR(4096), IN param2_in INTEGER, OUT @param3_out INTEGER) BEGIN # само тело процедуры END $$ DELIMITER ; |
SQL |
DECLARE current_index INTEGER DEFAULT 1; |
SQL |
SET @tagtype_id = in_tagtype_id; |
SQL |
SELECT COUNT(*) INTO my_count FROM `table` WHERE `type` = type_variable; |
SQL |
PREPARE stmt_count FROM style='color:red'>' SELECT COUNT(*) INTO @my_count FROM `table` WHERE `type` = ?'; # подготавливаем запрос EXECUTE stmt_count USING @type; # выполняем с подстановкой @type вместо ? |
SQL |
style='color:red'>' |
SQL |
SELECT firm_w,COUNT(*) FROM watch_records GROUP BY firm_w |
SQL |
DROP TABLE IF EXISTS `watch_records`; CREATE TABLE `watch_records` ( `id_w` int(11) NOT NULL auto_increment, `firm_w` tinytext NOT NULL, `collect_w` tinytext, `model_w` tinytext NOT NULL, `modif_w` tinytext NOT NULL, `ref_w` tinytext NOT NULL, `mat_w1` tinytext, `mat_w2` tinytext, `mat_w3` tinytext, `mat_bras` tinytext, `size_w` tinytext, `sex_w` tinytext, `form_w` tinytext, `color_body` tinytext, `color_bez` tinytext, `color_dial` tinytext, `bras_w` tinytext, `hasp_w` tinytext, `mark_dial` tinytext, `glass` tinytext, `inc_body` tinytext, `inc_body_mat` tinytext, `inc_dial` tinytext, `inc_dial_mat` tinytext, `inc_bras` tinytext, `inc_bras_mat` tinytext, `country` tinytext, `year_w` tinytext, `view` tinyint(4) default NULL, `des_body` mediumtext, `mech_w` tinytext, `sdes_w` mediumtext, `fdes_w` longtext, `ph1` tinytext, `des_ph1` mediumtext, `ph2` tinytext, `des_ph2` mediumtext, `ph3` tinytext, `des_ph3` mediumtext, `ph4` tinytext, `des_ph4` mediumtext, `ph5` tinytext, `des_ph5` mediumtext, `ph6` tinytext, `des_ph6` mediumtext, `ph7` tinytext, `des_ph7` mediumtext, `ph8` tinytext, `des_ph8` mediumtext, `ph9` tinytext, `des_ph9` mediumtext, `ph10` tinytext, `des_ph10` mediumtext, `popular_w` enum('1','0') default NULL, `popular_date` date default NULL, `not_fdes` enum('1','0') default NULL, `cost_ok` enum('0','1') default NULL, `check_red` enum('1','0') default NULL, `not_client` enum('1','0') default NULL, `print_cat` enum('1','0') default NULL, `big_cat` enum('1','0') default NULL, `mw_cat` enum('1','0') default NULL, `shop_on` enum('On','Off') default 'On', `data_reg` date default NULL, `date_upd` date default NULL, PRIMARY KEY (`id_w`), KEY `id_w` (`id_w`), KEY `firm_w` (`firm_w`(30)) ) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=cp1251; |
SQL |
INSERT INTO `watch_records` VALUES ('1', 'Adidas', '- - - -', '1', '1', '1', 'Золото', 'Золото', 'Золото', 'Натуральная кожа', '6', '0', '0', 'Красный', 'Красный', 'Красный', '2', 'Бабочка', '0', '1', '1', 'Бриллианты', '1', 'Бриллианты', '2', 'Бриллианты', '- - - - ', '2008', '0', '', 'Механические', '', '', '39.jpg', '', '40.jpg', '', '41.jpg', '', '42.jpg', '', '39-prev.jpg', '', '39-prev.jpg', '', '40-prev.jpg', '', '41-prev.jpg', '', '42-prev.jpg', '', '39-prev-prev.jpg', '', '1', '2009-04-01', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-01', '2009-06-22'); INSERT INTO `watch_records` VALUES ('2', 'Adidas', '- - - -', 'Модель1', 'Модификация1', 'Реф1', 'Платина', 'Платина', 'Платина', 'Каучук', '0', '0', '0', 'Красный', 'Красный', 'Красный', '3', 'Бабочка', '2', '1', '1', 'Бриллианты', '1', 'Бриллианты', '1', 'Бриллианты', 'Россия', '2008', '0', '', 'Кварцевые', '', '', '40.jpg', '', '', '', '', '', '', '', '40-prev.jpg', '', '40-prev.jpg', '', '', '', '', '', '', '', '40-prev-prev.jpg', '', '1', '2009-04-27', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-04', '2009-04-12'); INSERT INTO `watch_records` VALUES ('3', 'Adidas', '- - - -', '123', '123', '123', 'Золото', 'Золото', 'Золото', 'Каучук', '4', '1', '0', 'Красный', 'Красный', 'Красный', '2', 'Бабочка', '0', '3', '0', 'Бриллианты', '0', 'Бриллианты', '0', 'Бриллианты', '- - - - ', '- - - -', '0', '', 'Механические', '', '', '38.jpg', '', '', '', '', '', '', '', '38-prev.jpg', '', '38-prev.jpg', '', '', '', '', '', '', '', '38-prev-prev.jpg', '', '1', '2009-04-04', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-04', '2009-04-06'); INSERT INTO `watch_records` VALUES ('4', 'Adidas', '- - - -', '555', '555', '555', 'Золото', 'Золото', 'Золото', 'Натуральная кожа', '2', '2', '0', 'Красный', 'Красный', 'Красный', '0', 'Бабочка', '0', '2', '1', 'Бриллианты', '1', 'Бриллианты', '1', 'Бриллианты', 'Россия', '2009', '0', '', 'Механические', '', '', '39.jpg', '', '', '', '', '', '', '', '39-prev.jpg', '', '39-prev.jpg', '', '', '', '', '', '', '', '39-prev-prev.jpg', '', '1', '2009-04-04', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-04', '2009-06-18'); INSERT INTO `watch_records` VALUES ('5', 'Adidas', '- - - -', '777', '777', '777', 'Золото', 'Золото', 'Золото', 'Натуральная кожа', '3', '0', '0', '- - - -', '- - - -', 'Красный', '0', '- - - -', '0', '2', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', 'Кварцевые', '', '', '38.jpg', '', '', '', '', '', '', '', '38-prev.jpg', '', '38-prev.jpg', '', '', '', '', '', '', '', '38-prev-prev.jpg', '', '0', '2009-04-09', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-09', '2009-04-11'); INSERT INTO `watch_records` VALUES ('6', 'Adidas', '- - - -', '999', '999', '999', 'Платина', 'Платина', '- - - -', '- - - -', '4', '0', '0', 'Красный', '- - - -', '- - - -', '2', 'Бабочка', '0', '1', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', 'Кварцевые', '', '', '40.jpg', '', '', '', '', '', '', '', '40-prev.jpg', '', '40-prev.jpg', '', '', '', '', '', '', '', '40-prev-prev.jpg', '', '0', '2009-04-09', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-09', '2009-04-18'); INSERT INTO `watch_records` VALUES ('7', 'Adidas', '- - - -', 'Мод111', 'Мод111', 'Реф111', 'Платина', 'Платина', '- - - -', '- - - -', '4', '0', '0', 'Красный', '- - - -', '- - - -', '2', 'Бабочка', '0', '1', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', 'Кварцевые', '', '', '38.jpg', '', '', '', '', '', '', '', '38-prev.jpg', '', '38-prev.jpg', '', '', '', '', '', '', '', '38-prev-prev.jpg', '', '0', '2009-04-09', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-09', '2009-04-18'); INSERT INTO `watch_records` VALUES ('9', 'Atlantic', '- - - -', 'At2', 'At2', 'At2', 'Платина', 'Платина', 'Золото', 'Натуральная кожа', '3', '0', '0', 'Красный', 'Красный', 'Красный', '1', 'Бабочка', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', '- - - -', '', '', '38.jpg', '', '', '', '', '', '', '', '38-prev.jpg', '', '38-prev.jpg', '', '', '', '', '', '', '', '38-prev-prev.jpg', '', '0', '2009-04-12', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-12', '2009-04-12'); INSERT INTO `watch_records` VALUES ('10', 'Adidas', '- - - -', 'At3', 'At3', 'At3', '- - - -', '- - - -', '- - - -', '- - - -', '0', '0', '0', '- - - -', '- - - -', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', '- - - -', '', '', '36.jpg', '', '', '', '', '', '', '', '36-prev.jpg', '', '36-prev.jpg', '', '', '', '', '', '', '', '36-prev-prev.jpg', '', '0', '2009-04-12', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-12', '2009-04-12'); INSERT INTO `watch_records` VALUES ('11', 'Atlantic', '- - - -', 'At4', 'At4', 'At4', '- - - -', '- - - -', '- - - -', '- - - -', '0', '0', '0', '- - - -', '- - - -', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', '- - - -', '', '', '38.jpg', '', '', '', '', '', '', '', '38-prev.jpg', '', '38-prev.jpg', '', '', '', '', '', '', '', '38-prev-prev.jpg', '', '0', '2009-04-12', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-04-12', '2009-04-12'); INSERT INTO `watch_records` VALUES ('21', 'Atlantic', '- - - -', '456', '456', '456', 'Золото', 'Золото', 'Золото', 'Каучук', '0', '0', '0', '- - - -', 'Красный', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', 'Механические', '', '', '36.jpg', '', '', '', '', '', '', '', '36-prev.jpg', '', '36-prev.jpg', '', '', '', '', '', '', '', '36-prev-prev.jpg', '', '0', '2009-05-02', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-05-02', '2009-05-02'); INSERT INTO `watch_records` VALUES ('22', 'Atlantic', '- - - -', '123 45 567', '234', '234 65 56 456 657 789', 'Золото', 'Золото', '- - - -', '- - - -', '0', '0', '0', '- - - -', '- - - -', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', 'Кварцевые', '', '', '43.jpg', '', '', '', '', '', '', '', '43-prev.jpg', '', '43-prev.jpg', '', '', '', '', '', '', '', '43-prev-prev.jpg', '', '0', '2009-05-03', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-05-03', '2009-05-03'); INSERT INTO `watch_records` VALUES ('23', 'Adidas', '- - - -', '1999', '1999', '1999', '- - - -', '- - - -', '- - - -', '- - - -', '0', '0', '0', '- - - -', '- - - -', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', '- - - -', '', '', '38.jpg', '', '', '', '', '', '', '', '38-prev.jpg', '', '38-prev.jpg', '', '', '', '', '', '', '', '38-prev-prev.jpg', '', '0', '2009-05-06', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-05-06', '2009-05-06'); INSERT INTO `watch_records` VALUES ('29', 'Adidas', '- - - -', '00000000', '0000000000', '000000000', '- - - -', '- - - -', '- - - -', '- - - -', '0', '0', '0', '- - - -', '- - - -', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', '- - - -', '', '', '38.jpg', '', '39.jpg', '', '40.jpg', '', '41.jpg', '', '', '', '38-prev.jpg', '', '39-prev.jpg', '', '40-prev.jpg', '', '41-prev.jpg', '', 'Object id #27', '', '0', '2009-06-01', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-06-01', '2009-06-01'); INSERT INTO `watch_records` VALUES ('35', 'Adidas', '- - - -', 'fffffffffffffff', 'ffffffffffffff', 'fffffffffffffff', 'Платина', 'Платина', 'Платина', '- - - -', '0', '0', '0', '- - - -', '- - - -', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', '- - - -', '', '', '40.jpg', '', '41.jpg', '', '43.jpg', '', '37.jpg', '', '36.jpg', '', '40-prev.jpg', '', '41-prev.jpg', '', '43-prev.jpg', '', '37-prev.jpg', '', '36-prev.jpg', '', '0', '2009-06-01', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-06-01', '2009-06-01'); INSERT INTO `watch_records` VALUES ('36', 'Adidas', '- - - -', 'zzzzzzzzz', 'zzzzzzzzzzzz', 'zzzzzzzzz', 'Платина', 'Платина', 'Платина', '- - - -', '0', '0', '0', '- - - -', '- - - -', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', '- - - -', '', '', '43.jpg', '', '42.jpg', '', '41.jpg', '', '', '', '', '', '43-prev.jpg', '', '42-prev.jpg', '', '41-prev.jpg', '', '', '', '', '', '0', '2009-06-01', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-06-01', '2009-06-01'); INSERT INTO `watch_records` VALUES ('38', 'Atlantic', '- - - -', 'jjj', 'jjj', 'jjj', 'Золото', 'Золото', 'Золото', '- - - -', '0', '0', '0', '- - - -', '- - - -', '- - - -', '0', '- - - -', '0', '0', '0', '- - - - ', '0', '- - - - ', '0', '- - - - ', '- - - - ', '- - - -', '0', '', '- - - -', '', '', '43.jpg', '', '38.jpg', '', '41.jpg', '', '', '', '', '', '43-prev.jpg', '', '38-prev.jpg', '', '41-prev.jpg', '', '', '', '', '', '0', '2009-06-01', '0', '0', '0', '0', '0', '0', '0', 'On', '2009-06-01', '2009-06-01'); |
SQL |
CHECK TABLE `watch_records`; OPTIMIZE TABLE `watch_records`; |
SQL |
CREATE TABLE IF NOT EXISTS `watch_records` ( `id_w` int(11) NOT NULL auto_increment, `firm_w` varchar(50) NOT NULL, `collect_w` tinytext, `model_w` tinytext NOT NULL, `modif_w` tinytext NOT NULL, `ref_w` tinytext NOT NULL, `mat_w1` tinytext, `mat_w2` tinytext, `mat_w3` tinytext, `mat_bras` tinytext, `size_w` tinytext, `sex_w` tinytext, `form_w` tinytext, `color_body` tinytext, `color_bez` tinytext, `color_dial` tinytext, `bras_w` tinytext, `hasp_w` tinytext, `mark_dial` tinytext, `glass` tinytext, `inc_body` tinytext, `inc_body_mat` tinytext, `inc_dial` tinytext, `inc_dial_mat` tinytext, `inc_bras` tinytext, `inc_bras_mat` tinytext, `country` tinytext, `year_w` tinytext, `view` tinyint(4) default NULL, `des_body` mediumtext, `mech_w` tinytext, `sdes_w` mediumtext, `fdes_w` longtext, `ph1` tinytext, `des_ph1` mediumtext, `ph2` tinytext, `des_ph2` mediumtext, `ph3` tinytext, `des_ph3` mediumtext, `ph4` tinytext, `des_ph4` mediumtext, `ph5` tinytext, `des_ph5` mediumtext, `ph6` tinytext, `des_ph6` mediumtext, `ph7` tinytext, `des_ph7` mediumtext, `ph8` tinytext, `des_ph8` mediumtext, `ph9` tinytext, `des_ph9` mediumtext, `ph10` tinytext, `des_ph10` mediumtext, `popular_w` enum('1','0') default NULL, `popular_date` date default NULL, `not_fdes` enum('1','0') default NULL, `cost_ok` enum('0','1') default NULL, `check_red` enum('1','0') default NULL, `not_client` enum('1','0') default NULL, `print_cat` enum('1','0') default NULL, `big_cat` enum('1','0') default NULL, `mw_cat` enum('1','0') default NULL, `shop_on` enum('On','Off') default 'On', `data_reg` date default NULL, `date_upd` date default NULL, PRIMARY KEY (`id_w`), KEY `firm_w` (`firm_w`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=39 ; |
Цитата (Guest @ 9.07.2009 - 01:51) |
1. CHECK TABLE `watch_records`; OPTIMIZE TABLE `watch_records`; - это для чего нужно? |
Цитата (Guest @ 9.07.2009 - 01:51) |
2. "Да с твоей таблицей тот запрос, который мы написали просто убъет сервер." - запрос подсчета количества часов? А как же быть? |
Код |
id | username | register_date | user_ip | active | info |
Цитата (vedmed @ 10.07.2009 - 01:19) |
В след раз буду думать по-другому |
Цитата (vedmed @ 10.07.2009 - 01:19) |
Надеюсь не очень тебя запарил своими проблемами? |