0 0

mysql 数据库 关联 查询30

现在有三个表 最好不用子查询 (因为是改另一个程序,程序上貌似有限制,用子查询会显示查询语句有危险。。。)
三个表是forum ,label,related
forum 里有主键ID,label里有主键ID和labelName两列,related里有主键ID和forumID还有labelID。

select forum.ID from forum LEFT JOIN related ON forum.ID = related.forumID LEFT JOIN label ON label.ID = related.labelID where (label = '你好' and label = '你很好') or label = '你不好'

于是现在查询结果是空。。。。。。。
我知道貌似是(label = '你好' and label = '你很好') 这个地方有点冲突
于是乎有没有高手能提供个解决办法什么的。。。。。。
不一定非得用related表。。。。。
不过必须要把标签摘出来以便进行查询

拿出了仅有的30积分。。。。
希望能有人能帮帮我

问题补充:晕。。我写错了。。。。
(labelName= '你好' and labelName= '你很好')
问题应该是这样的。。
其实我是在弄一个论坛
forum 是板块的表
我想给板块加个标签的功能
想查出有你好和你很好的板块或者是你不好的板块。。
于是问题出在这两个条件同时存在的时候逻辑上就有问题了。。。。。。

问题补充:于是我再写清楚一点。。。。。
要查询的两个标签是‘新番’‘星期一’
一个板块下同时有这两个标签就查出来没有的就过滤掉

问题补充:
liuqing_2010_07 写道
另外 你可以不用代码 处理 你可以分两次查询也行。


其实我是在改discuz的程序想让论坛首页上按条件显示某些板块
两次查询我也想过但是这样会不会对性能造成影响呢。。。

问题补充:
liuqing_2010_07 写道
两次查询 肯定会对 性能造成 影响。
那就用代码处理 现在 是 sql分组不可行 没办法。

其实就是一个多对多关系的应用。。。。。
怎么一下子变复杂了呢。。。。。
我再等等。。实在不行就多查一次吧。。。。。
2012年1月06日 23:04

10个答案 按时间排序 按投票排序

0 0

where (label = '你好' and label = '你很好') or label = '你不好'

label = '你好' and label = '你很好' 这里应该用or

就是
    where labelname in('你好','你很好','你不好')  

应该

   

where (t= 1 and t = 2) or t = 3
里面永远 不成立

2012年1月18日 17:03
0 0

这个东西你想一次性查出来,又要分组,还只把ID查出来。理论上是不行的。
最好的办法:
1.一次性查出来 包括ID和label.labelName
2.在代码中根据label.labelName分组。

差一点的方法:
把label.labelName拼到查询条件中 一次一次的查。这样效率不高。

2012年1月09日 19:10
0 0

select sub.id
from (
select forum.id, GROUP_CONCAT(label.labelName) as group_label
from forum, label, related
where forum.id = related.forumID
  and label.id = related.labelID
group by forum.id) sub
where sub.group_label like '%label1%'
  and sub.group_label like '%label2%';


Wish this can help you!

2012年1月09日 17:14
0 0

这个问题有好的解决方案了吗 说来大家分享一下 好吗?

2012年1月07日 21:22
0 0

两次查询 肯定会对 性能造成 影响。
那就用代码处理 现在 是 sql分组不可行 没办法。

2012年1月07日 12:33
0 0

另外 你可以不用代码 处理 你可以分两次查询也行。

2012年1月07日 09:53
0 0

select forum.ID ,label.labelName from forum LEFT JOIN related ON forum.ID = related.forumID LEFT JOIN label ON label.ID = related.labelID 
where label.labelName like '你%好' ;


你这个设计到分组技术:
select forum.ID 

选出来的是ID 采用sql分组很没有意义的 有多少个ID就有多少个组

你实际上是按照(你好,你很好)和(你不好)分成两组。
这个你需要在代码中分组。所以采用上面的过滤条件一次性查询出ID,和label.labelName后在根据(你好,你很好)和(你不好)分组。

2012年1月07日 09:33
0 0

    where labelname in('你好','你很好','你不好')   

2012年1月07日 09:13
0 0

这样就可以了:

select forum.ID from forum LEFT JOIN related ON forum.ID = related.forumID LEFT JOIN label ON (label.ID = related.labelID and label.labelName  like '你%好' )


这样就能查出 你好 ,你很好,你太好,你真好,你不好 了呵呵!。

原先为空的原因是你使用了全局过滤条件:
where (label = '你好' and label = '你很好') or label = '你不好' 


这个过滤条件就等于:查出来的记录中 label.labelName = '你不好'
可是你的数据库中没有 这样的数据,或者三个表连接后没有 这样的记录。导致。

多表查询时 要慎用全局条件 和 连接条件 。分清 最后的过滤条件是什么 作为 where 后面的全局条件。 表和表之间的连接条件是什么 除了ID以外还有什么,把它写到on 后面 有and连接 不要作为连接条件。

2012年1月07日 07:41
0 0

(label = '你好' and label = '你很好') or label = '你不好'


里的label是表还是字段?还有原始需求能说的再明白一点吗?

如果label是字段的话,label = '你好' and label = '你很好'这句话已经查不到数据了,
(label = '你好' and label = '你很好') or label = '你不好'就等于 label = '你不好'

2012年1月07日 00:33

相关推荐

    Yii2实现跨mysql数据库关联查询排序功能代码

    本篇文章主要介绍了Yii2实现跨mysql数据库关联查询排序功能示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    sqlserver数据库关联mysql

    文档介绍了在sqlserver数据库中关联并操作mysql数据库的方案,并且提供了mysql-odbc 的驱动。

    python第十九课数据可视化-使用matploatlib与mysql数据库关联绘制图形.docx

    python第十九课数据可视化-使用matploatlib与mysql数据库关联绘制图形.docx

    mysql数据库.pptx

    MySQL简介 什么是数据库,什么是MySQL 1 使用MySQL DML ,DDL 排序,过滤,IN,NOT,UNION和分组 2 高级进阶 关联查询,内置函数和自定义函数,存储过程 3 性能调优 基础设置,SQL语句调优 4 目录 3 mysql数据库全文共...

    全国城市mysql数据库(含拼音)

    全国城市mysql数据库,是sql格式,直接导入到mysql数据库即可使用。 全国城市数据库与其它城市数据库不同的地方在于,添加了拼音字段,把中国的城市同名称转化为拼音,方便你在实际场景中应用。另外提示,这个中国...

    Mybatis实现一对一关联查询(Mysql数据库)

    实现Mybatis框架中一对一关联映射的查询操作。 User用户表 - User_Card身份证表属于 1-1 的关系

    mysql数据库语言范本

    collate:翻译为整序,整理,校对集,校对规则,排序规则——其实就是指字符以何种方式进行排序的设定,也是一些跟字符编码有关联的固定名字。比如“传”和“智”两个字,按拼音,就是“传”在前,但按笔顺,就是...

    全国(中国)省市两级联动 mysql数据库文件

    全国(中国)省市两级联动 mysql数据库文件 导入即可、真实可用

    Java连接MySQL 数据库的操作

    文章主要介绍的是Java连接MySQL 数据库,编写了一个java程序来演示一下Java如何访问MySQL数据库,能直接用的

    MySql数据库的安装

    MySQL数据库是一款小型关联式数据库管理系统,由于MySQL数据库体积小、速度快、成本低,尤其是开放源码这一特点,一般中小型网站开发都选择MySQL作为网站数据库。MySQL的执行性能非常高,运行速度非常快,支持多平台...

    创建mysql数据库视图

    如何建立视图,如何可视化建立视图 介绍的很简单

    省市区自关联 MySQL 插入数据.txt

    适合掌握 MySQL 数据库的人群

    全国省份mysql数据库(含拼音)

    全国省份mysql数据库,sql格式,直接导入到mysql数据库即可使用。...另外提示,这个中国省份数据库最好跟我上传的另外一个全国城市mysql数据库一起使用,效果会更好,因为这两个数据库本身就是有关联的。

    全国各省、市、县、镇、村的mysql数据库

    另外5个带后缀的表是相关联的,关联id为各自的行政编码,例如湖北省id为420(其实是42,数据库中省份编码均是3位数字,最后一个0是多余的),宜昌市id为4205(然后用8个0补齐就是420500000000),当阳市(我的家乡,...

    mysql数据库设计规范.docx

    所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不要超过32个...

    企业人力资源管理系统mysql数据库设计

    这个系统旨在帮助企业更好地管理其员工和人力资源,包括记录员工个人信息、职位、薪水等信息,以及与部门和企业的关联关系。通过这个系统,企业可以更方便地组织和查询员工信息,提高人力资源管理效率。此外,这个...

    Powerdesigner连接Mysql数据库配置图解

    Powerdesigner连接Mysql数据库配置图解 由于MySQL自己的安装程序不包含ODBC的驱动,所以PowerDesigner是不能连接到MySQL的.需要安装MyODBC开发版3.51来访问. 自行下载MyODBC-3.51.11-1-win.exe并安装~ 打开...

    mysql数据库

    MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用...

    MySQL数据库资料+sql语句

    此文件是本人亲自开发,测试,编写的,里面的内容绝对的物有所值,文件内容包括MySQL数据库模型图,完整的数据库语句,以及最重要的数据库文档说明,说明中包含数据库所有表结构以及相互之间的关联关系。很适合...

Global site tag (gtag.js) - Google Analytics