我是SQL的新手。作为一个例子是我的主要表格:
CREATE TABLE IF NOT EXISTS `main`.`item` (
`item_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'auto incrementing item_id of each job, unique index',
`item_title` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'item title, not-unique',
`item_status`
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='item data';
我的参考表:
CREATE TABLE IF NOT EXISTS `main`.`status` (
`status_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'auto incrementing status_id of each status, unique index',
`status_name` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'status name, unique',
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='status';
如何将主表引用到状态表的ID,因此存在与主项关联的状态。
此外,由于这是我的第一个数据库,如果我犯了其他任何错误,请随时突出显示。
答案 0 :(得分:2)
您的主表应该有一个status_id列。该列应指定为外键,并链接到状态表的主键。
这将使主表的item_status列不再必要。使用主表中的status_id值在前端查找状态表的主键。
答案 1 :(得分:0)
简单:
SELECT * FROM main.item, main.status
where main.item.item_status = main.status.status_id
这会将item
的所有行与来自status
的所有行(其中包含匹配的ID)相连接。如果表item_status
中未知status
,则不会显示任何行!
您应该只保留表item_status的最后一次创建。