Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно сделать выборку на уровне MySQL? / 7 сообщений из 7, страница 1 из 1
06.04.2014, 22:24:47
    #38606696
AK1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно сделать выборку на уровне MySQL?
Создано 3 таблицы

Код: plsql
1.
2.
3.
4.
5.
6.
CREATE TABLE `auto_mark` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `auto_mark` varchar(300) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `auto_mark` (`auto_mark`(255))
) ENGINE=InnoDB AUTO_INCREMENT=220 DEFAULT CHARSET=utf8;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE `auto_model` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `auto_mark_id` int(10) NOT NULL,
  `auto_model` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_auto_mark` (`auto_mark_id`),
  CONSTRAINT `fk_auto_mark` FOREIGN KEY (`auto_mark_id`) REFERENCES `auto_mark` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=250 DEFAULT CHARSET=utf8;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE `auto_active_lots` (
  `id` bigint(30) NOT NULL AUTO_INCREMENT,
  `auto_mark_id` int(10) NOT NULL,
  `auto_model_id` int(10) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_auto_mark_id` (`auto_mark_id`),
  KEY `fk_auto_model_id` (`auto_model_id`),
  CONSTRAINT `fk_auto_model_id` FOREIGN KEY (`auto_model_id`) REFERENCES `auto_model` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_auto_mark_id` FOREIGN KEY (`auto_mark_id`) REFERENCES `auto_mark` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;



на уровне СУБД можно сделать колонку auto_model_id зависимой от auto_mark_id в таблице auto_active_lots? Что б отображались только auto_model_id соответствующие auto_mark_id таблицы auto_model, а не весь список auto_model?
...
Рейтинг: 0 / 0
06.04.2014, 23:50:27
    #38606746
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно сделать выборку на уровне MySQL?
дык уже
Код: sql
1.
 CONSTRAINT `fk_auto_model_id` FOREIGN KEY (`auto_model_id`) REFERENCES `auto_model` (`id`) ON UPDATE CASCADE,
...
Рейтинг: 0 / 0
07.04.2014, 08:01:11
    #38606824
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно сделать выборку на уровне MySQL?
на уровне СУБД можно сделать колонку auto_model_id зависимой от auto_mark_id в таблице auto_active_lots?


Уже это сделано.


Что б отображались только auto_model_id соответствующие auto_mark_id таблицы auto_model, а не весь список auto_model?

Субд ничего не отображает.
Она только манипулирует данным.
Т.е. это придется делать руками.
...
Рейтинг: 0 / 0
07.04.2014, 22:53:35
    #38607750
AK1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно сделать выборку на уровне MySQL?
Спасибо, еще вопрос.
Добавляю таблицу
Код: plsql
1.
2.
ALTER TABLE `auto_active_lots`
ADD COLUMN `region_id`  tinyint(10) NOT NULL AFTER `price`;


добавляю ключ
Код: plsql
1.
ALTER TABLE `auto_active_lots` ADD CONSTRAINT `fk_region_id` FOREIGN KEY (`region_id`) REFERENCES `region` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE;


показывает ошибку 1005, если меняю имя ключа с fk_region_id на любой другой, ошибки нет, но срабатывает данная ошибка через раз (несколько ключей так создал), почему так происходит?
...
Рейтинг: 0 / 0
07.04.2014, 23:17:00
    #38607770
AK1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно сделать выборку на уровне MySQL?
Правильнее так, вот таблица

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
CREATE TABLE `auto_active_lots` (
  `id` bigint(30) NOT NULL AUTO_INCREMENT,
  `auto_mark_id` int(10) NOT NULL,
  `auto_model_id` int(10) NOT NULL,
  `year` smallint(10) NOT NULL,
  `car_body_type_id` tinyint(10) NOT NULL,
  `color_id` smallint(10) NOT NULL,
  `energy_type_id` smallint(10) NOT NULL,
  `engine_capacity_id` smallint(10) NOT NULL,
  `price` bigint(30) NOT NULL,
  `region_id` tinyint(10) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_auto_mark_id` (`auto_mark_id`),
  KEY `fk_auto_model_id` (`auto_model_id`),
  KEY `fk_car_body_type_id` (`car_body_type_id`),
  KEY `fk_color_id` (`color_id`),
  KEY `fk_energy_type_id` (`energy_type_id`),
  KEY `fk_energy_capacity_id` (`engine_capacity_id`),
  KEY `fk_region_id` (`region_id`),
  CONSTRAINT `fk_region_id` FOREIGN KEY (`region_id`) REFERENCES `region` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_auto_mark_id` FOREIGN KEY (`auto_mark_id`) REFERENCES `auto_mark` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_auto_model_id` FOREIGN KEY (`auto_model_id`) REFERENCES `auto_model` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_car_body_type_id` FOREIGN KEY (`car_body_type_id`) REFERENCES `car_body_type` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_color_id` FOREIGN KEY (`color_id`) REFERENCES `color` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_energy_capacity_id` FOREIGN KEY (`engine_capacity_id`) REFERENCES `engine_capacity` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_energy_type_id` FOREIGN KEY (`energy_type_id`) REFERENCES `energy_type` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


вот вспомогательные таблицы
Код: plsql
1.
2.
3.
4.
5.
CREATE TABLE `color` (
  `id` smallint(10) NOT NULL AUTO_INCREMENT,
  `color` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;


Код: plsql
1.
2.
3.
4.
5.
CREATE TABLE `region` (
  `id` tinyint(10) NOT NULL AUTO_INCREMENT,
  `region` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;


почему если создавал fk_color_id с таким названием ключ создался, а с таким fk_region_id показывает ошибку, ведь значения совпадают?
...
Рейтинг: 0 / 0
07.04.2014, 23:18:24
    #38607771
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно сделать выборку на уровне MySQL?
AK1988а с таким fk_region_id показывает ошибкупотому что такой уже существует.
...
Рейтинг: 0 / 0
08.04.2014, 00:02:02
    #38607784
AK1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно сделать выборку на уровне MySQL?
miksoftAK1988а с таким fk_region_id показывает ошибкупотому что такой уже существует.
Извините, ввел в заблуждение, скопировал с дампа с которого пробовал восстановить с таким ключем, но при восстановлении показывает ошибку - ошибка восстановления таблицы transmission (???). Вот дамп работающий.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE TABLE `auto_active_lots` (
  `id` bigint(30) NOT NULL AUTO_INCREMENT,
  `auto_mark_id` int(10) NOT NULL,
  `auto_model_id` int(10) NOT NULL,
  `year` smallint(10) NOT NULL,
  `car_body_type_id` tinyint(10) NOT NULL,
  `color_id` smallint(10) NOT NULL,
  `energy_type_id` smallint(10) NOT NULL,
  `engine_volume_id` smallint(10) NOT NULL,
  `price` bigint(30) NOT NULL,
  `region_id` tinyint(10) NOT NULL,
  `town_id` int(10) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_auto_mark_id` (`auto_mark_id`),
  KEY `fk_auto_model_id` (`auto_model_id`),
  KEY `fk_car_body_type_id` (`car_body_type_id`),
  KEY `fk_color_id` (`color_id`),
  KEY `fk_energy_type_id` (`energy_type_id`),
  KEY `fk_town_id` (`town_id`),
  KEY `fk_engine_volume_id` (`engine_volume_id`),
  KEY `fk_region_id1` (`region_id`),
  CONSTRAINT `fk_region_id1` FOREIGN KEY (`region_id`) REFERENCES `region` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_auto_mark_id` FOREIGN KEY (`auto_mark_id`) REFERENCES `auto_mark` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_auto_model_id` FOREIGN KEY (`auto_model_id`) REFERENCES `auto_model` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_car_body_type_id` FOREIGN KEY (`car_body_type_id`) REFERENCES `car_body_type` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_color_id` FOREIGN KEY (`color_id`) REFERENCES `color` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_energy_type_id` FOREIGN KEY (`energy_type_id`) REFERENCES `energy_type` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_engine_volume_id` FOREIGN KEY (`engine_volume_id`) REFERENCES `engine_volume` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk_town_id` FOREIGN KEY (`town_id`) REFERENCES `town` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



вот вспомогательные таблицы

Код: plsql
1.
2.
3.
4.
5.
CREATE TABLE `color` (
  `id` smallint(10) NOT NULL AUTO_INCREMENT,
  `color` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;



Код: plsql
1.
2.
3.
4.
5.
CREATE TABLE `region` (
  `id` tinyint(10) NOT NULL AUTO_INCREMENT,
  `region` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;



почему если создавал fk_color_id с таким названием ключ создался, а с таким fk_region_id показывает ошибку, ведь значения совпадают? Создается только с отличным именем ключа fk_region_id1 или fk_region_id100500 и т.д.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно сделать выборку на уровне MySQL? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]