找回密码
 立即注册
收起左侧

数据库表的关联问题

7
回复
5911
查看
[复制链接]
累计签到:256 天
连续签到:1 天
来源: 2015-5-7 14:07:58 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我有3个表
A表中有id Address(int) TypeID(int) ModelID(int) AgreementVersion FirmwarmVersion EquipmentCapacity
B表 TypeID(int) devicemation(char)
C表 ModelID(int)  devicemation(char)
我用sql语句怎查询出A表中的所有数据,同时将TypeID ModelID换成B C表中对应的devicemation的值
只是显示 不改变A表中数据,
A : 1 3 2 3 测试 测试1 测试2
     2 5 3 4 测试 测试1 测试2
     3 7 5 6 测试 测试1 测试2
B:1 a
     2 b
     3 c
     4 d
     5 e
C:3 o
     4 p
     5 q
     6 r
输出:
1 3 b o 测试 测试1 测试2
2 5 c p 测试 测试1 测试2
3 7 e r 测试 测试1 测试2

问题1:只用sql语句怎么实现
问题2:用QSqlRelationalTableModel 怎么实现



回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-7 14:11:41 显示全部楼层
问题1 我用这个测试
SELECT a.id,a.Address,b.DeviceExplain,c.DeviceExplain,a.AgreementVersion,a.FirmwarmVersion,a.EquipmentCapacity,a.LoopNumber,a.PortNumber,a.PotterRate,a.TimeOut,a.InstallAddress,a.describe
FROM tb_controllerinformation a
LEFT JOIN tb_devicemodelcomparison b ON b.ModelID=a.ModelID
LEFT JOIN tb_devicetypecomparison c ON c.TypeID=a.TypeID
可以实现 不过第一句太长
有没有简单一点的
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-7 14:17:56 显示全部楼层
本帖最后由 z55716368 于 2015-5-7 14:20 编辑

可以在数据库中查询
我在Qt里面用tableview插入就不可以了 不知道是不是我代码问题
上代码:
//功能:导入数据库表到tablev中显示
    //参数:
    //返回:
    initTable();
    QSqlQuery query;
    query.exec("SELECT a.Address,b.DeviceExplain,c.DeviceExplain,a.AgreementVersion,a.FirmwarmVersion,a.EquipmentCapacity,a.LoopNumber,a.PortNumber,a.PotterRate,a.TimeOut,a.InstallAddress,a.describe"
               "FROM tb_controllerinformation a "
               "LEFT JOIN tb_devicemodelcomparison b ON b.ModelID=a.ModelID"
               "LEFT JOIN tb_devicetypecomparison c ON c.TypeID=a.TypeID");
    int i = 0;
    while(query.next())
    {
        m_model->setItem(i, 0, new QStandardItem(query.value(1).toString()));
        m_model->setItem(i, 1, new QStandardItem(query.value(2).toString()));
        m_model->setItem(i, 2, new QStandardItem(query.value(3).toString()));
        m_model->setItem(i, 3, new QStandardItem(query.value(4).toString()));
        m_model->setItem(i, 4, new QStandardItem(query.value(5).toString()));
        m_model->setItem(i, 5, new QStandardItem(query.value(6).toString()));
        m_model->setItem(i, 6, new QStandardItem(query.value(7).toString()));
        m_model->setItem(i, 7, new QStandardItem(query.value(8).toString()));
        m_model->setItem(i, 8, new QStandardItem(query.value(9).toString()));
        m_model->setItem(i, 9, new QStandardItem(query.value(10).toString()));
        m_model->setItem(i, 10, new QStandardItem(query.value(11).toString()));
        m_model->setItem(i, 11, new QStandardItem(query.value(12).toString()));
        m_model->setItem(i, 12, new QStandardItem(query.value(13).toString()));

        i++;
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-7 14:32:07 显示全部楼层
貌似自己就解决了 重新弄了一下sql语句 copy过来使用就可以了
要分的速度啦~
帮我解决一下问题了也可以啊 那个控件没用过
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-7 15:04:34 显示全部楼层
m_tableview->setEditTriggers(QAbstractItemView::NoEditTriggers);
这个是什么意思呢 老是看不懂
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-14 11:51:11 显示全部楼层
来个人结贴了~ GOGOGOGO
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-16 12:01:33 显示全部楼层
@风满楼卷风沙
来结贴                          
回复 支持 反对

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-6-16 16:31:39 显示全部楼层
@风满楼卷风沙 来回帖 给你都豆子吃
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了