-
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个答案 按时间排序 按投票排序
-
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
-
这个东西你想一次性查出来,又要分组,还只把ID查出来。理论上是不行的。
最好的办法:
1.一次性查出来 包括ID和label.labelName
2.在代码中根据label.labelName分组。
差一点的方法:
把label.labelName拼到查询条件中 一次一次的查。这样效率不高。2012年1月09日 19:10
-
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
-
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
-
这样就可以了:
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
-
(label = '你好' and label = '你很好') or label = '你不好'
里的label是表还是字段?还有原始需求能说的再明白一点吗?
如果label是字段的话,label = '你好' and label = '你很好'这句话已经查不到数据了,
(label = '你好' and label = '你很好') or label = '你不好'就等于 label = '你不好'2012年1月07日 00:33
相关推荐
本文档主要介绍了MySQL数据库的基本概念、数据类型、SQL语言、约束条件、查询语言、聚合函数、子查询和多表查询等知识点。 数据库基础概念 在介绍MySQL数据库之前,首先需要了解数据库的基本概念。数据库是一个...
### thinkPHP5解决不同服务器不同数据库表关联查询问题 在实际的应用场景中,尤其是在大型分布式系统中,数据往往不会集中存放在同一个数据库或同一台服务器上。为了提高系统的可用性和可扩展性,开发者通常会选择...
MySQL数据库是一种广泛使用的开源关系型数据库管理系统,以其高效、可靠和易于学习的特性深受开发者喜爱。本教程将全面介绍MySQL的基础知识,并通过实例帮助你掌握其核心操作。 首先,我们来了解一下MySQL的基本...
MySQL数据库是目前世界上最受欢迎的关系型数据库管理系统之一,尤其在互联网应用中被广泛使用。这个"MySQL数据库入门"压缩包提供了一系列的学习资源,包括PPT、PDF文档和代码示例,帮助初学者快速掌握MySQL的基础...
Python 数据可视化 - 使用 Matplotlib 与 MySQL 数据库关联绘制图形 本文将介绍使用 Python 的 Matplotlib 库和 MySQL 数据库来实现数据可视化,主要涵盖以下知识点: 一、使用 Matplotlib 与 MySQL 数据库关联...
综上所述,在Yii2框架下实现跨数据库关联查询和排序功能,需要定义模型间的关系、使用ActiveDataProvider来支持排序和分页、使用joinWith方法来实现跨数据库查询,并注意MySQL的配置,确保可以进行跨数据库的操作。...
通过不同的查询方式,可以获取满足特定条件的数据,或者实现数据间的关联查询。 最后,【索引和试图】章节介绍数据库中的两种重要概念。索引能显著提升数据检索速度,而试图则是虚拟表,基于一个或多个表创建,提供...
在SQL Server数据库中关联并操作MySQL数据库是一种跨数据库平台的数据集成技术,这使得用户能够从SQL Server环境中查询、更新或管理MySQL中的数据。本篇文档将深入探讨这一主题,包括如何建立连接、配置ODBC驱动以及...
在MySQL数据库应用中,实验训练2主要涉及了数据查询操作,包括单表查询、多条件查询、DISTINCT关键字、ORDER BY排序、GROUP BY分组以及聚合函数COUNT(), SUM(), AVG(), MAX()和MIN()的使用。这些是数据库查询的基础...
在MySQL数据库中,用户可以通过SQL(Structured Query Language)执行各种任务,如创建数据库、表结构,插入、更新和删除数据,以及执行复杂的查询来分析存储的信息。SQL是数据库管理员和开发者的必备技能,它包括了...
MySQL数据库软件是世界上最受欢迎的开源关系型数据库管理系统之一,由Oracle公司维护。它以其高效、稳定和易用性而受到广大开发者的青睐。本套教程将带你深入理解MySQL的各个方面,从基础安装到实际操作,让你能够...
- **体积小、速度快、总体成本低、开放源代码**:这些特点使得 MySQL 成为许多企业和个人用户的首选数据库系统。它不仅易于安装和配置,而且在性能上表现优异,特别是在处理大量数据时仍能保持较高的运行速度。 - **...
本实验旨在深入理解MySQL数据库的基本操作,包括数据库的创建、查看、删除和使用,以及表结构的设计与管理。通过实际操作,我们将掌握如何创建和修改表结构,设置表约束,以及处理表数据的插入、删除和修改。此外,...
MySQL数据库常用命令汇总 MySQL数据库是目前最流行的开源关系数据库管理系统,它提供了丰富的命令来管理和操作数据库。本文汇总了MySQL数据库常用的命令,包括数据库操作、表操作和数据操作三部分。 数据库操作 1...
在现代软件开发中,Java语言和MySQL数据库的结合使用是技术领域中一个非常普遍且重要的课题。Java作为一门广泛应用于商业、企业级应用开发的编程语言,其稳定性和跨平台能力使其在软件开发领域占据着举足轻重的地位...
### MySQL数据库教案知识点详解 #### 一、课程结构与安排 **任务引入**(5分钟):通过实际问题激发学生兴趣,引出课程主题。 **课程介绍**(20分钟):详细介绍课程背景、目标、内容及学习方法,让学生了解课程...
在本案例中,我们讨论的是针对中国省份和城市的MySQL数据库,包含两个关键表:省份表和城市表。 首先,MySQL是一种流行的开源关系型数据库管理系统(RDBMS),它支持SQL语言,广泛应用于网站开发、企业级应用和数据...
- **多表查询**:通过`JOIN`实现不同表之间的关联查询。 - **分组查询**:使用`GROUP BY`进行数据分类。 - **聚合函数**:如`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`等计算特定值。 - **模糊查询**:使用...