首页 > 其他分享 >多表查询

多表查询

时间:2023-05-24 15:57:14浏览次数:47  
标签:多表 name 笛卡尔 employees 查询 连接

1. 定义

  • 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作
  • 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联

1.1 笛卡尔积的错误

SELECT last_name, department_name FROM employees, departments;
  • employees表中有107条数据
  • departments表中有27条数据
  • 上述的查询语句,查出来了2889条数据,而2889 = 107 * 27;这种查询出来的错误,称为:笛卡尔积的错误。

1.2 笛卡尔积(或交叉连接)的理解

  • 笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中元素个数的乘积数
  • 笛卡尔积的错误会在下面条件下产生:
    • 省略多个表的连接条件(或关联条件)
    • 连接条件(或关联条件)无效
    • 所有表中的所有行互相连接
  • 为了避免笛卡尔积, 可以在 WHERE 加入有效的连接条件
SELECT last_name, department_name FROM employees, departments 
WHERE employees.department_id = departments.department_id;  #连接条件
  • 在 WHERE子句中写入连接条件
  • 在表中有相同列时,在列名之前加上表名前缀

2. 多表查询分类讲解

标签:多表,name,笛卡尔,employees,查询,连接
From: https://www.cnblogs.com/styCy/p/17428545.html

相关文章

  • Vue3——基于tdesign封装一个通用的查询组件
    前言基于Vue3+TS+tdesign封装一个通用的查询组件;临时写的一个demo内容组件代码<template><t-formref="form":model="formData"inline><t-form-itemv-for="iteminformConfig":key="item.name":label="item.label&qu......
  • 免费API查询法定节假日
    API:https://timor.tech/api/holiday/year/2023请求结果示例{"code":0,"holiday":{"01-01":{"holiday":true,"name":"元旦","wa......
  • Discourse 如何配置 MAXMIND 来对 IP 地址反向查询
     【配置MAXMIND,Discourse需要重新构建,这将会导致服务中断。】什么是MAXMIND和为什么我们需要使用这个服务Discourse使用 MAXMIND 来通过IP地址反向查询具体的物理地址。如果Discourse没有配置Maxmind’s数据库,我们看到的配置信息如下:或者在对Discourse容......
  • es笔记五之term-level的查询操作
    本文首发于公众号:Hunter后端原文链接:es笔记五之term-level的查询操作官方文档上写的是term-levelqueries,表义为基于准确值的对文档的查询,可以理解为对keyword类型或者text类型分词为keyword的字段进行term形式的精确查找。以下是本篇笔记目录:是否存在值前缀搜索......
  • hive查询练习
    练习12022-08-071,liuyan2,tangyan3,jinlian4,dalang5,ximenqing2022-08-081,liuyan2,tangyan4,dalang6,wusong--创建分区表记录每天用户登陆信息createtabletb_login(uidint,namestring)partitionedby(dtstring)rowformatdelimited......
  • 在终端运行查询clickhouse的方式
    执行的语法和命令如下:timeclickhouse-client-hlocalhost-udefault--password"root"--port9000-dtpch-q"selectcount(*)fromcustomer;"打印的结果显示如下:root@test-stonedata-ck02:~#timeclickhouse-client-hlocalhost-udefault--password&q......
  • clickhouse-查询的22条SQL
    selectl_returnflag,l_linestatus,sum(l_quantity)assum_qty,sum(l_extendedprice)assum_base_price,sum(l_extendedprice*(1-l_discount))assum_disc_price,sum(l_extendedprice*(1-l_discount)*(1+l_tax))assum_charge,avg(l_quantity)asavg_q......
  • .net6中数据库查询报错:'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无
    错误语句:在数据库查询中使用skip()问题原因:数据库版本为SQLServer2008,不支持'Fetch'和'Next'语句SQLServer2012及后续版本才支持相关语句解决方法:1.引用包: System.Data.SqlClient和EntityFrameworkCore.UseRowNumberForPaging2.使用:在Program.cs中调整数据库连接bu......
  • 第四十天 各种各样的mysql数据查询方法
    一、昨日内容回顾约束条件之主键primarykey1.InnoDB规定表必须有且只有一个主键(单列主键联合主键)idintprimarykey单例主键idint,uidint,primarykey(id,uid)联合主键idintprimarykeyauto_increment主键自增2.如果表中有主键那么基于主键查询数据速度会非......
  • 15-DSL查询语法-复合查询-布尔查询
    布尔查询是一个或多个查询子句的组合,每一个子句就是一个子查询。子查询的组合方式有:(1)must:必须匹配每个子查询,类似“与”(2)should:选择性匹配子查询,类似“或”(3)must_not:必须不匹配,不参与算分,类似“非”(4)filter:必须匹配,不参与算分比如在搜索酒店时,除了关键字搜索外,我们还可能根据......