|
Связка таблиц
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=47&fpage=39&tid=1829298]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 299ms |
total: | 448ms |
0 / 0 |