完善表结构内容,实现多表关联语义转SQL数据库查询tosql4.0
目的
除前文应对解决的有大量表外,多表存在关联关系也是急需解决的主要问题
本节,我们将在不改变dify工作流的前提下,实现多表管理查询
说明
本节为本系列的收官文章,前文有3篇前置条件及解决思路,这里不再赘述他们分别是:语义转SQL,实现大模型对接查询数据库内数据、通过dify实现大模型对接查询数据库内数据,语义转SQL2.0、语义转sql 3.0 实现在大模型对大量数据表中查询数据
本文档中的所有下载的所需资源都可以在网盘下载。
1.修改现有orders表结构
根据前文,我们拥有一张orders
表,该表结构如下:
由于上表中使用到goods
、user
字段,且我们拥有另一张goods
表和users
表,我们需要将这两张表与orders
表关联起来,则修改后的orders
表结构如下:
2.修改data_table_structure表的数据
2.1 手动修改orders表结构
由于我们修改了orders
表结构,所以我们需要修改data_table_structure
表中的数据,将orders
表的goods
字段和user
字段修改为goods_id
和user_id
字段,明确goods_id
与goods
表的关联关系,user_id
与users
表的关联关系,修改后orders
的table_structure
的值如下:
CREATE TABLE `orders` ( `id` INT(11) NULL DEFAULT NULL COMMENT 'ID', `goods_id` INT(11) NULL DEFAULT NULL COMMENT '货品ID', `user_id` INT(11) NULL DEFAULT NULL COMMENT '下单用户ID', `date` DATE NULL DEFAULT NULL COMMENT '下单日期')COMMENT='订单'COLLATE='utf8_unicode_ci'ENGINE=InnoDB;goods_id对应下述goods表结构的id字段CREATE TABLE `goods` ( `id` INT(11) NOT NULL COMMENT 'ID', `name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '名称' COLLATE 'utf8_unicode_ci')COMMENT='商品'COLLATE='utf8_unicode_ci'ENGINE=InnoDB;user_id对应下述users表结构的id字段CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` VARCHAR(50) NOT NULL COMMENT '姓名' COLLATE 'utf8_unicode_ci', `age` INT(11) NULL DEFAULT NULL COMMENT '年龄', `hobby` VARCHAR(50) NULL DEFAULT NULL COMMENT '爱好' COLLATE 'utf8_unicode_ci', `city` VARCHAR(50) NULL DEFAULT NULL COMMENT '所在城市' COLLATE 'utf8_unicode_ci', `high_school_score` FLOAT NULL DEFAULT NULL COMMENT '高考成绩', `cutoff_score` FLOAT NULL DEFAULT NULL COMMENT '分数线', PRIMARY KEY (`id`) USING BTREE)COMMENT='用户表'COLLATE='utf8_unicode_ci'ENGINE=InnoDBAUTO_INCREMENT=5;
2.2自动修改orders表结构
如何你无法理解上述修改,可以直接将网盘中的tosql-4.sql
文件导入到数据库中,即可自动执行前文修改。
操作步骤见语义转SQL,实现大模型对接查询数据库内数据中的-4. 创建或导入数据库和表。
3.测试效果
打开dify,选择
eogee_text2sql
工作流,输入张三购买了几种商品
,点击立即执行
。点击
查看结果
,可以看到如下:
4.总结
本节,我们实现了多表关联语义转SQL数据库查询4.0,通过修改orders
表结构,将goods
和users
表与orders
表关联起来,实现了多表管理查询。
至此,语义转sql相关的教程内容就告一段落了,欢迎大家下载试用,我们的网盘中包括了本次实例的全部数据资源,期待大家的使用反馈。