我有一个包含四个表的数据库:
1)数据库 - 保存不同的数据集
CREATE TABLE IF NOT EXISTS `databases` (
`id` int(11) NOT NULL,
`name` varchar(200) NOT NULL,
`title` varchar(200) NOT NULL COMMENT 'label for the database',
`auto_width` tinyint(4) NOT NULL DEFAULT '1',
`set_width` int(11) NOT NULL DEFAULT '0',
`date_created` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;
2)数据库字段 - 保存数据库中的不同字段。 (每个数据库都有几个用户可以保存数据的字段)
CREATE TABLE IF NOT EXISTS `database_fields` (
`id` int(11) NOT NULL,
`database_id` int(11) NOT NULL,
`column_id` varchar(20) NOT NULL,
`description` text NOT NULL,
`min_num_characters` int(11) NOT NULL,
`max_num_characters` int(11) NOT NULL,
`type` varchar(10) NOT NULL,
`editable` int(11) NOT NULL DEFAULT '1',
`displayed` int(11) NOT NULL DEFAULT '1',
`start_value` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=98 ;
3)数据库数据 - 保存数据库中的不同行
CREATE TABLE IF NOT EXISTS `database_data` (
`id` int(11) NOT NULL,
`database_id` int(11) NOT NULL,
`title` varchar(100) NOT NULL,
`status` int(11) NOT NULL DEFAULT '1' COMMENT '1 =Active, 2 =Deleted.',
`date_added` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3586 ;
4)数据库字段值 - 保存每个数据库中不同字段的值:
CREATE TABLE IF NOT EXISTS `database_fields_values` (
`id` int(11) NOT NULL,
`database_id` int(11) NOT NULL,
`data_id` int(11) NOT NULL,
`field_id` int(11) NOT NULL,
`field_value` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=24351 ;
我可以通过循环每个数据库下的不同字段并使用三个键database_id
,data_id
和field_id
使用简单查询读取数据来查询表中的数据。但是我不确定如何通过一个字段排序(field_value
表中的database_fields_values
字段)检索数据,但在某些情况下,所有行可能没有该字段的值,即对于行x
,database_fields_values
中可能没有字段' Field_x'的条目。
我不确定我的解释是否熟练且易于理解,如果有,请帮助我,我们将非常感激。