2 - таблицы это справочники
4 - таблицы куда пишутся данные.
все таблицы связанны между собой
Дамп таблиц
--
-- Table structure for table `kas_anketa_junior`
--
CREATE TABLE IF NOT EXISTS `kas_anketa_junior` (
`id_anketa_junior` int(11) NOT NULL AUTO_INCREMENT,
`fio` text NOT NULL,
`hday` text NOT NULL,
`class` text NOT NULL,
`addres` text NOT NULL,
`h_phone` text NOT NULL,
`m_phone` varchar(12) NOT NULL,
`m_phone_rod` varchar(12) NOT NULL,
`ucheba` text NOT NULL,
`school` text NOT NULL,
`email` text NOT NULL,
`anketa` text NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id_anketa_junior`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;
--
-- Table structure for table `kas_departament`
--
CREATE TABLE IF NOT EXISTS `kas_departament` (
`id_departament` int(11) NOT NULL AUTO_INCREMENT,
`departament` text NOT NULL,
PRIMARY KEY (`id_departament`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;
--
-- Dumping data for table `kas_departament`
--
INSERT INTO `kas_departament` (`id_departament`, `departament`) VALUES
(1, 'Юбилейная 40, гостиница ВЕГА'),
(2, 'Татищева 6, 19 квартал'),
(3, 'Комсомольский р-н, Ярославская 9');
-- --------------------------------------------------------
--
-- Table structure for table `kas_reklama`
--
CREATE TABLE IF NOT EXISTS `kas_reklama` (
`id_reklama` int(11) NOT NULL AUTO_INCREMENT,
`reklama` text NOT NULL,
PRIMARY KEY (`id_reklama`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;
--
-- Dumping data for table `kas_reklama`
--
INSERT INTO `kas_reklama` (`id_reklama`, `reklama`) VALUES
(1, 'Газеты'),
(2, 'Журналы'),
(3, 'Наружняя реклама'),
(4, 'Радио/телевидение'),
(5, 'Интернет'),
(6, 'Рекомендации знакомых');
-- --------------------------------------------------------
--
-- Table structure for table `kas_reklama_data`
--
CREATE TABLE IF NOT EXISTS `kas_reklama_data` (
`id_reklama_data` int(11) NOT NULL AUTO_INCREMENT,
`reklama` int(1) NOT NULL,
`id_junior` int(11) NOT NULL,
`id_big` int(11) NOT NULL,
PRIMARY KEY (`id_reklama_data`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
--
-- Dumping data for table `kas_reklama_data`
--
INSERT INTO `kas_reklama_data` (`id_reklama_data`, `reklama`, `id_junior`, `id_big`) VALUES
(1, 1, 1, 0),
(2, 5, 1, 0),
(3, 3, 2, 0),
(4, 4, 2, 0);
-- --------------------------------------------------------
--
-- Table structure for table `kas_week`
--
CREATE TABLE IF NOT EXISTS `kas_week` (
`id_week` int(11) NOT NULL AUTO_INCREMENT,
`week_small` text NOT NULL,
`week_big` text NOT NULL,
PRIMARY KEY (`id_week`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;
--
-- Dumping data for table `kas_week`
--
INSERT INTO `kas_week` (`id_week`, `week_small`, `week_big`) VALUES
(1, 'Пн.', 'Понедельник'),
(2, 'Вт.', 'Вторник'),
(3, 'Ср.', 'Среда'),
(4, 'Чт.', 'Четверг'),
(5, 'Пт.', 'Пятница'),
(6, 'Сб.', 'Суббота'),
(7, 'Вс.', 'Воскресенье');
-- --------------------------------------------------------
--
-- Table structure for table `kas_week_data`
--
CREATE TABLE IF NOT EXISTS `kas_week_data` (
`id_week_data` int(11) NOT NULL AUTO_INCREMENT,
`week` int(1) NOT NULL,
`id_junior` int(11) NOT NULL,
`id_big` int(11) NOT NULL,
PRIMARY KEY (`id_week_data`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;
--
-- Dumping data for table `kas_week_data`
--
INSERT INTO `kas_week_data` (`id_week_data`, `week`, `id_junior`, `id_big`) VALUES
(1, 1, 1, 0),
(2, 3, 1, 0),
(3, 5, 1, 0),
(4, 2, 2, 0),
(5, 3, 2, 0),
(6, 4, 2, 0);
Так вот, нужно вытянуть все данные в одну таблицу, но почемуто при выборке мускул выводит польше строк чем должно быть на самом деле
Подсведка ключей таблиц, кто с чем связан
--
-- Table structure for table `kas_anketa_junior`
--
CREATE TABLE IF NOT EXISTS `kas_anketa_junior` (
`id_anketa_junior` int(11) NOT NULL AUTO_INCREMENT,
`fio` text NOT NULL,
`hday` text NOT NULL,
`class` text NOT NULL,
`addres` text NOT NULL,
`h_phone` text NOT NULL,
`m_phone` varchar(12) NOT NULL,
`m_phone_rod` varchar(12) NOT NULL,
`ucheba` text NOT NULL,
`school` text NOT NULL,
`email` text NOT NULL,
`anketa` text NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id_anketa_junior`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;
--
-- Table structure for table `kas_departament`
--
CREATE TABLE IF NOT EXISTS `kas_departament` (
`id_departament` int(11) NOT NULL AUTO_INCREMENT,
`departament` text NOT NULL,
PRIMARY KEY (`id_departament`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;
--
-- Dumping data for table `kas_departament`
--
INSERT INTO `kas_departament` (`id_departament`, `departament`) VALUES
(1, 'Юбилейная 40, гостиница ВЕГА'),
(2, 'Татищева 6, 19 квартал'),
(3, 'Комсомольский р-н, Ярославская 9');
-- --------------------------------------------------------
--
-- Table structure for table `kas_reklama`
--
CREATE TABLE IF NOT EXISTS `kas_reklama` (
`id_reklama` int(11) NOT NULL AUTO_INCREMENT,
`reklama` text NOT NULL,
PRIMARY KEY (`id_reklama`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;
--
-- Dumping data for table `kas_reklama`
--
INSERT INTO `kas_reklama` (`id_reklama`, `reklama`) VALUES
(1, 'Газеты'),
(2, 'Журналы'),
(3, 'Наружняя реклама'),
(4, 'Радио/телевидение'),
(5, 'Интернет'),
(6, 'Рекомендации знакомых');
-- --------------------------------------------------------
--
-- Table structure for table `kas_reklama_data`
--
CREATE TABLE IF NOT EXISTS `kas_reklama_data` (
`id_reklama_data` int(11) NOT NULL AUTO_INCREMENT,
`reklama` int(1) NOT NULL,
`id_junior` int(11) NOT NULL,
`id_big` int(11) NOT NULL,
PRIMARY KEY (`id_reklama_data`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
--
-- Dumping data for table `kas_reklama_data`
--
INSERT INTO `kas_reklama_data` (`id_reklama_data`, `reklama`, `id_junior`, `id_big`) VALUES
(1, 1, 1, 0),
(2, 5, 1, 0),
(3, 3, 2, 0),
(4, 4, 2, 0);
-- --------------------------------------------------------
--
-- Table structure for table `kas_week`
--
CREATE TABLE IF NOT EXISTS `kas_week` (
`id_week` int(11) NOT NULL AUTO_INCREMENT,
`week_small` text NOT NULL,
`week_big` text NOT NULL,
PRIMARY KEY (`id_week`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;
--
-- Dumping data for table `kas_week`
--
INSERT INTO `kas_week` (`id_week`, `week_small`, `week_big`) VALUES
(1, 'Пн.', 'Понедельник'),
(2, 'Вт.', 'Вторник'),
(3, 'Ср.', 'Среда'),
(4, 'Чт.', 'Четверг'),
(5, 'Пт.', 'Пятница'),
(6, 'Сб.', 'Суббота'),
(7, 'Вс.', 'Воскресенье');
-- --------------------------------------------------------
--
-- Table structure for table `kas_week_data`
--
CREATE TABLE IF NOT EXISTS `kas_week_data` (
`id_week_data` int(11) NOT NULL AUTO_INCREMENT,
`week` int(1) NOT NULL,
`id_junior` int(11) NOT NULL,
`id_big` int(11) NOT NULL,
PRIMARY KEY (`id_week_data`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;
--
-- Dumping data for table `kas_week_data`
--
INSERT INTO `kas_week_data` (`id_week_data`, `week`, `id_junior`, `id_big`) VALUES
(1, 1, 1, 0),
(2, 3, 1, 0),
(3, 5, 1, 0),
(4, 2, 2, 0),
(5, 3, 2, 0),
(6, 4, 2, 0);
Собственно мой запрос к БД.
SELECT *
FROM `kas_anketa_junior` AS `j`
LEFT JOIN `kas_departament` AS `d` ON `j`.`school` = `d`.`id_departament`
LEFT JOIN `kas_week_data` AS `dw` ON `j`.`id_anketa_junior` = `dw`.`id_junior`
LEFT JOIN `kas_week` AS `w` ON `w`.`id_week` = `dw`.`week`
LEFT JOIN `kas_reklama_data` AS `dr` ON `j`.`id_anketa_junior` = `dr`.`id_junior`
LEFT JOIN `kas_reklama` AS `r` ON `r`.`id_reklama` = `dr`.`reklama`
WHERE `j`.`id_anketa_junior` = 2
Спустя 2 часа, 26 минут, 44 секунды (24.07.2012 - 19:57) vagrand написал(а):
Смените LEFT JOIN на INNER JOIN
Спустя 22 минуты, 40 секунд (24.07.2012 - 20:20) Kuliev написал(а):
Цитата (vagrand @ 24.07.2012 - 20:57) |
Смените LEFT JOIN на INNER JOIN |
Спасибо, но результат один и тодже....
Спустя 27 минут, 49 секунд (24.07.2012 - 20:47) vagrand написал(а):
Цитата |
Спасибо, но результат один и тодже.... |
Не может такого быть, запрос выведет ровно столько строк сколько удовлетворяют условию `j`.`id_anketa_junior` = 2 и ни одной больше
Спустя 1 час, 1 минута, 41 секунда (24.07.2012 - 21:49) Placido написал(а):
Может, выводится много лишних полей, а не строк?
Спустя 34 минуты, 45 секунд (24.07.2012 - 22:24) inpost написал(а):
либо разбей запросы - будет в х раз быстрее.
А если данный запрос подправить - используй группировку. Лефт джоин - к одному родителю множество дочерей подгружает удовлетворяя запрос. Чтобы дочерний был лишь один - группировку по полю, по которому присоединяешь. Не дома, поэтому код набрать не могу. Единственная проблема в том, что у тебя много таблиц, одна из которых может помешать группировке, но не факт. Так вот, отдельеые запросы будут и быстрее и сможешь указать лимит 1, чем и добьешься большей эффективности!
А если данный запрос подправить - используй группировку. Лефт джоин - к одному родителю множество дочерей подгружает удовлетворяя запрос. Чтобы дочерний был лишь один - группировку по полю, по которому присоединяешь. Не дома, поэтому код набрать не могу. Единственная проблема в том, что у тебя много таблиц, одна из которых может помешать группировке, но не факт. Так вот, отдельеые запросы будут и быстрее и сможешь указать лимит 1, чем и добьешься большей эффективности!
Спустя 2 минуты, 52 секунды (24.07.2012 - 22:27) Kuliev написал(а):
Цитата (Placido @ 24.07.2012 - 22:49) |
Может, выводится много лишних полей, а не строк? |
Давай разберём что такое строки и что такое поля.
| NAME| -> Вот это поле!
-------------------
Вася
Петя
Даша
Маша
-----------------------
А вот это строки данного поля.
Исходя из этого можно сделать вывод, что полей больше быть НЕ МОЖЕТ.
Спустя 2 минуты, 30 секунд (24.07.2012 - 22:29) Kuliev написал(а):
Цитата (inpost @ 24.07.2012 - 23:24) |
либо разбей запросы - будет в х раз быстрее. А если данный запрос подправить - используй группировку. Лефт джоин - к одному родителю множество дочерей подгружает удовлетворяя запрос. Чтобы дочерний был лишь один - группировку по полю, по которому присоединяешь. Не дома, поэтому код набрать не могу. Единственная проблема в том, что у тебя много таблиц, одна из которых может помешать группировке, но не факт. Так вот, отдельеые запросы будут и быстрее и сможешь указать лимит 1, чем и добьешься большей эффективности! |
Спасибо за совет...
Нужно выспаться и посмотреть со свежей головой. Как только присоединяю 4 таблицу так вся красота съезжает.
Спустя 9 минут, 42 секунды (24.07.2012 - 22:39) Placido написал(а):
Цитата (Kuliev @ 24.07.2012 - 22:27) |
| NAME| -> Вот это поле! |
Для меня это очевидно. Просто после твоего предыдущего вопроса по регулярке (элементарного) с комментарием "Регулярка не моя! Нашол в инете", хотел убедиться, что ты понимаешь, о чем спрашиваешь.
Спустя 8 часов, 51 минута, 26 секунд (25.07.2012 - 07:30) Kuliev написал(а):
Цитата (Placido @ 24.07.2012 - 23:39) | ||
Для меня это очевидно. Просто после твоего предыдущего вопроса по регулярке (элементарного) с комментарием "Регулярка не моя! Нашол в инете", хотел убедиться, что ты понимаешь, о чем спрашиваешь. |
Ну так я там же писал, что в регулярках не силен, что я ее нашел в инете. Вот я и обратился к знающим людям.
Ничего зазорного в этом нет.
А Вы, такое чувство решили постебаться надомной!