|
Связка таблиц
|
|||
---|---|---|---|
#18+
Всем привет. Такой вопрос. Я связываю допустим 2 таблицы, у меня выводится это таким образом: Скриншот Можно ли сделать так, вместо цифр чтобы писалось словами? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 18:03 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Можно. Выводите в запросе поля со словами. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 18:36 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Как? У меня там тип int, если ставлю varchar и делаю связку, то ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 20:05 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Где это "там"? Показывайте DDL таблиц и проблемный запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 20:12 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Допустим я заново создаю столбец: ALTER TABLE `auto` CHANGE `auto_id` `auto_id` INT(11) NOT NULL AUTO_INCREMENT, CHANGE `repair_id` `repair_id` VARCHAR(255) NOT NULL; Создаю связь: ALTER TABLE `auto` ADD FOREIGN KEY (`repair_id`) REFERENCES `remont`(`remont_id`) ON DELETE CASCADE ON UPDATE CASCADE; Ответ MySQL: Документация #1215 - Невозможно добавить ограничения внешнего ключа ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 11:19 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Точнее не добавляю, изменил тип на varchar ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 11:23 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
hypero , Вам же сказали: vkleПоказывайте DDL таблиц Выполните Код: sql 1.
для обеих таблиц и скопируйте результат сюда. Тогда будет предмет для разговора... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 12:00 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
таблица auto: CREATE TABLE `auto` ( `auto_id` int(11) NOT NULL AUTO_INCREMENT, `marka` varchar(255) NOT NULL, `model` varchar(10) NOT NULL, `probeg` int(11) NOT NULL, `color` varchar(255) NOT NULL, `client_id` int(11) NOT NULL, `id_master` int(11) NOT NULL, `repair_id` varchar(255) NOT NULL, PRIMARY KEY (`auto_id`), KEY `client_id` (`client_id`), KEY `id_master` (`id_master`), KEY `repair_id` (`repair_id`), CONSTRAINT `auto_ibfk_1` FOREIGN KEY (`client_id`) REFERENCES `clients` (`client_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `auto_ibfk_2` FOREIGN KEY (`id_master`) REFERENCES `masters` (`master_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 таблица remont: CREATE TABLE `remont` ( `remont_id` int(11) NOT NULL AUTO_INCREMENT, `auto_id` int(11) NOT NULL, `breaking` varchar(255) NOT NULL, `price` varchar(10) NOT NULL, `date_in` date NOT NULL, `date_out` date NOT NULL, PRIMARY KEY (`remont_id`), KEY `auto_id` (`auto_id`), KEY `remont_id` (`remont_id`) ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 13:00 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Во-о-от... И сразу видна ошибка. Это таблица ремонта должна ссылаться на таблицу машин, а не наоборот. Ремонтируешь-то ты вполне определённую машину. Т.е. то, какая ремонтируется машина - это одна из характеристик любого отдельно взятого ремонта. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:04 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
авторЭто таблица ремонта должна ссылаться на таблицу машин, а не наоборот. Она и ссылается на таблицу машин. Просто столбцы одинаковые. У таблицы remont - auto_id и у таблицы auto - auto_id. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:44 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Если я правильно понял, то запрос должен быть такой? ALTER TABLE auto ADD FOREIGN KEY (auto_id) REFERENCES remont (auto_id); ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:46 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
hyperoЕсли я правильно понял У тебя что, в один ремонт сразу несколько машин могут ремонтироваться? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:21 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
AkinaУ тебя что, в один ремонт сразу несколько машин могут ремонтироваться? У меня на одной машине может быть сразу несколько ремонтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:29 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
У меня выводится в связанной таблице цифры (скриншот). Я бы хотел чтобы вместо этих цифр выводились названия прямо в базе данных. Возможно это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:31 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
hyperoУ меня выводится в связанной таблице цифры (скриншот). Я бы хотел чтобы вместо этих цифр выводились названия прямо в базе данных. Возможно это сделать?Где текст запроса, которым Вы выбирате данные? Найдите его и замените имя поля с числом (`repair_id`, если речь о ремонтах) на имя поля с текстом (вероятно, `breaking`). Есть какие-то трудности в изменении текста запроса? Если есть - то напишите, какие именно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:55 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
hyperoУ меня на одной машине может быть сразу несколько ремонтов.Простите, Вы понимаете разницу между терминами "сущность" и "экземпляр сущности"? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:30 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
авторПростите, Вы понимаете разницу между терминами "сущность" и "экземпляр сущности"? Нет, я ошибся. На каждой машине один ремонт. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:42 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Ну вообще по идее может быть и такое ведь, что у одной машины может быть несколько ремонтов или я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:43 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
vkleГде текст запроса, которым Вы выбирате данные? Найдите его и замените имя поля с числом (`repair_id`, если речь о ремонтах) на имя поля с текстом (вероятно, `breaking`). Есть какие-то трудности в изменении текста запроса? Если есть - то напишите, какие именно. Как раз таки поле breaking у меня в таблице remont . Насчет запроса: Я хочу чтобы вместо цифр показывались сами слова без запроса - зашел в табличку и сразу видишь слова вместо цифр. Прикрепил схему связей. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:49 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Прикрепляю еще скрины 2 связанных таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:50 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
hyperoПрикрепил схему связей.hyperoНа каждой машине один ремонт.А у каждого ремонта только одна машина. Так? Тогда зачем тут две таблицы? В этой схеме, если та же самая машина приехала на ремонт во второй (третий и т.д.) раз, тогда это будет уже новая во всех отношениях машина. Какой-то "копипаст в экселевском файлике" получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 17:18 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
vkleА у каждого ремонта только одна машина. Так? Я запутался если честно. Таблица remont (скриншот). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 17:56 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
hyperoТаблица remont (скриншот).Здесь мы видим, что один и тот же auto_id = 7 ремонтировался дважды. Притом, судя по датам, это разные пришествия одного и того же пациента в сервис. Значит, автомобиль никак не может ссылаться на ремонт. Автомобили - отдельно, ремонты - отдельно. Не должно быть в схеме связей подобных закольцовок. Ремонт, в принципе, может напрямую одновременно ссылаться и на автомобиль и на клиента. А вот ссылка с ремонта на слесаря (или иных специалистов) или на площадку производства работ (гипотетически, их может быть несколько) уже не столь очевидна и потребует дополнительных таблиц связей. Ведь для ремонта двигателя в ряде случаев потребуется не только моторист, но ещё и электрик и слесарь. В этом смысле лучше начинать с проработки и формализации бизнес-модели. hyperoПросто столбцы одинаковые. У таблицы remont - auto_id и у таблицы auto - auto_id.Вот и поди ж разбери, где что. Чтобы не путаться самому и не путать других, делайте имена столбцов разными. И, вообще, уделите больше внимания названиям. У вас в таблице только один ремонт или множество ремонтов? В другой таблице только один автомобиль или множество автомобилей? Очевидно, и в том и в другом случае множество сущностей, а значит, следует использовать множественное число в названии таблицы. Например: `users`, `tasks`, `projects`. Каждая запись таблицы описывает единичный экземпляр сущности. Очевидно, там уже должно быть единственное число. Каждое поле записи характеризует некоторое свойство сущности. Например, `user_id`, `user_name`, `project_id`, `project_name`, `task_id`, `task_name`, `task_project` или `task_project_id`. При правильном подходе имена полей практически не будут дублироваться, а по имени поля уже понятно, что это такое и откуда взялось. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 18:52 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
vkleЗдесь мы видим, что один и тот же auto_id = 7 ремонтировался дважды. Притом, судя по датам, это разные пришествия одного и того же пациента в сервис. Значит, автомобиль никак не может ссылаться на ремонт. Автомобили - отдельно, ремонты - отдельно. Не должно быть в схеме связей подобных закольцовок. Так у меня же есть еще таблица auto. auto_id в таблице remont это внешний ключ. Таблица auto (скриншот) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 20:05 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
hyperoТак у меня же есть еще таблица auto. auto_id в таблице remont это внешний ключ.Ссылка из таблицы ремонтов на таблицу автомобилей (розовая на картинке) вполне понятна. Она ссылается (показывает) на ремонтируемый автомобиль. Ссылка из таблицы автомобилей на таблицу ремонтов (желтая на картинке)hyperoПрикрепил схему связей. не понятна. Сможете объяснить суть, смысл, назначение этой ссылки словами? Обыкновенными словами, а не столь любымой Вами наскальной живописью в форме скриншотов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 21:05 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
vkleСсылка из таблицы ремонтов на таблицу автомобилей (розовая на картинке) вполне понятна. Она ссылается (показывает) на ремонтируемый автомобиль. Получается у меня всё логично? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 22:25 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
Там у меня есть еще другие таблицы, желтая ссылка как раз таки для них ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 22:26 |
|
Связка таблиц
|
|||
---|---|---|---|
#18+
hyperovkleЗдесь мы видим, что один и тот же auto_id = 7 ремонтировался дважды. Притом, судя по датам, это разные пришествия одного и того же пациента в сервис. Значит, автомобиль никак не может ссылаться на ремонт. Автомобили - отдельно, ремонты - отдельно. Не должно быть в схеме связей подобных закольцовок. Так у меня же есть еще таблица auto. auto_id в таблице remont это внешний ключ. Таблица auto (скриншот) Ты сам-то понимаешь что у тебя в таблицах хранится? Судя по всему у тебя связь remont.remont_id=auto.repair_id Вот смотри свой скриншот: https://www.sql.ru/forum/actualfile.aspx?id=21813685 auto_id=3, repair_id=4 если же посмотреть скриншот https://www.sql.ru/forum/actualfile.aspx?id=21813499 то видно, что для auto_id=3 есть remont_id=3 и remontid=6 А remont_id=4 указан для auto_id=6 Как так? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 07:21 |
|
|
start [/forum/topic.php?all=1&fid=47&tid=1829298]: |
0ms |
get settings: |
10ms |
get forum list: |
24ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
134ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 279ms |
total: | 529ms |
0 / 0 |