标签: inner-join

来自同一个表的多个INNER JOIN

我有一张金属表

MetalID    integer
MetalName  text
MetalCode  text
Run Code Online (Sandbox Code Playgroud)

物品表

ItemID     integer
ItemName   text
...
Metal1     int Ref.-> metals.metalID
Metal2     int Ref.-> metals.metalID
Metal3     int Ref.-> metals.metalID
Run Code Online (Sandbox Code Playgroud)

我正在尝试选择三个MetalCodes

SELECT m.MetalCode as 'Metal1', m.MetalCode as 'Metal2',m.MetalCode as 'Metal3'
FROM Item as k
INNER JOIN Metals AS m ON m.metalID=k.metal1 
INNER JOIN Metals AS m ON m.metalID=k.metal2
INNER JOIN Metals AS m ON m.metalID=k.metal3
WHERE k.ItemID=?
Run Code Online (Sandbox Code Playgroud)

看起来我完全错了.请帮忙.

sql sqlite join inner-join

19
推荐指数
2
解决办法
4万
查看次数

搜索具有相关性的大型mysql数据库

我正在为我们公司的内部网构建一个相当大的"搜索"引擎,它有一个1miljon加上条目,它运行在一个相当快的服务器上,但是一些搜索查询需要1分钟.

这就是表格的外观

表

我尝试为它创建一个索引,但好像我错过了一些东西,这就是show index的显示方式

idexes

这是查询本身,它的排序大大减慢了查询,但即使没有排序的查询也有点慢.

SELECT SQL_CALC_FOUND_ROWS *
FROM `businessunit`
INNER JOIN `businessunit-postaddress` ON `businessunit`.`Id` = `businessunit-postaddress`.`BusinessUnit`
WHERE `businessunit`.`Name` LIKE 'tanto%'
ORDER BY `businessunit`.`Premium` DESC ,
CASE WHEN `businessunit`.`Name` = 'tanto'
THEN 0
WHEN `businessunit`.`Name` LIKE 'tanto %'
THEN 1
WHEN `businessunit`.`Name` LIKE 'tanto%'
THEN 2
ELSE 3
END , `businessunit`.`Name`
LIMIT 0 , 30
Run Code Online (Sandbox Code Playgroud)

很感谢任何形式的帮助

编辑: 这个查询有什么窒息99%是通过与wildcharacter的相关性排序% 当我做一个解释它说使用where; 使用fsort

php mysql search inner-join left-join

19
推荐指数
3
解决办法
4676
查看次数

oracle sql中join关键字和内连接关键字有什么区别?

我找不到关键词的文档,join但我在网上看到了使用它的例子.

我在Oracle hr模式中做了一些实验,我有表departments:

  • deparment_name
  • manager_id
  • location_id

一张桌子employees:

  • first_name
  • employee_id

和表locations:

  • location_id
  • city

查询应返回department_name,部门经理的first_name以及部门所在的城市.

与使用关键字join相比,使用关键字的代码似乎返回了一些结果inner join

代码join:

select d.department_name, e.first_name,l.city
from departments d
   join employees e on d.manager_id=e.employee_id
   join locations l on d.location_id=l.location_id
Run Code Online (Sandbox Code Playgroud)

代码inner join:

select d.department_name, e.first_name,l.city
from departments d
   inner join employees e on d.manager_id=e.employee_id
   inner join locations l on d.location_id=l.location_id
Run Code Online (Sandbox Code Playgroud)

两种情况之间是否存在差异,或者我恰好偶然发现他们返回相同结果的情况?

sql oracle join inner-join

19
推荐指数
1
解决办法
3万
查看次数

别名Knex中的表

我有一个SQL查询,它引用同一个表两次,我需要将表别名为两个单独的别名.我无法弄清楚如何用Knex来构建它.

有一个'Words'表和'Users'表.Words表有两个外键,'author_id'和'winner_id',引用Users表的'id'列.

这是我想在Knex中编写的SQL:

SELECT w.*, ua.name, uw.name FROM Words AS w
INNER JOIN Users AS ua ON w.author_id = ua.id 
LEFT JOIN Users AS uw ON w.winner_id = uw.id
Run Code Online (Sandbox Code Playgroud)

我在Knex如何做到这一点有点迷茫.我的第一次尝试没有涉及别名,所以我得到了一个"不止一次使用"的错误.当我尝试使用.as()方法时,knex抱怨缺少.from()子句..as()方法是否仅用于别名子查询,我不应该期望它用于别名表吗?

sql inner-join left-join knex.js

19
推荐指数
2
解决办法
1万
查看次数

在内部加入订购

我把内部联接放在我的查询中.我得到了结果,但不知道数据是如何输出的.任何人都告诉我内部联接如何匹配数据.我正在显示图像.有两张桌子(一张或两张桌子).

替代文字

据我说第一排它应该是Mohit,但输出是不同的.请告诉我.

提前致谢.

sql sql-server inner-join

18
推荐指数
3
解决办法
10万
查看次数

使用内部联接使用hibernate返回多个对象类型

我似乎在使用hibernate中的查询时遇到了一些困难.我正在两个表上执行内连接.

SELECT * FROM product p INNER JOIN warehouse w ON p.wid = w.id
Run Code Online (Sandbox Code Playgroud)

产品表:

id | name | wid | price | stock .....
Run Code Online (Sandbox Code Playgroud)

仓库表:

id | name | city | lat | long .....
Run Code Online (Sandbox Code Playgroud)

加入结果:

id | name | wid | price | stock | id | name | city | lat | long .....
Run Code Online (Sandbox Code Playgroud)

当我运行查询..

Session.createSQLQuery(this.query)
        .addEntity("p", Product.class)
        .addEntity("w", Warehouse.class).list();
Run Code Online (Sandbox Code Playgroud)

因此,对于每个结果,我得到一个包含a Product object和a 的对象Warehouse object.

这是预料之中的.问题是hibernate将产品的id和名称分配给仓库对象id和name属性.就创建Warehouse项目而言,好像连接结果中的前两列都过度了.Product对象始终包含正确的数据.

关于找到解决此问题的方法的任何建议,以便表示正确仓库数据的id和name列将非常受欢迎.

提前致谢.

java hibernate inner-join

18
推荐指数
3
解决办法
3万
查看次数

在同一查询中使用左连接和内连接

下面是我的查询使用左连接按预期工作.我想要做的是进一步添加另一个表过滤此查询,但是这样做有困难.我将调用这个新表,table_3并希望添加到哪里table_3.rwykey = runways_updatable.rwykey.任何帮助将非常感谢.

SELECT * 
FROM RUNWAYS_UPDATABLE 
LEFT JOIN TURN_UPDATABLE 
ON RUNWAYS_UPDATABLE.RWYKEY = TURN_UPDATABLE.RWYKEY 
WHERE RUNWAYS_UPDATABLE.ICAO = 'ICAO'
AND (RUNWAYS_UPDATABLE.TORA > 4000 OR LDA > 0) 
AND (TURN_UPDATABLE.AIRLINE_CODE IS NULL OR TURN_UPDATABLE.AIRLINE_CODE = '' 
OR TURN_UPDATABLE.AIRLINE_CODE = '') 
Run Code Online (Sandbox Code Playgroud)

' *************编辑为CLARIFY***************** 这是我想要使用的内连接的另一个语句,我想结合这两个语句.

SELECT * 
FROM RUNWAYS_UPDATABLE A, RUNWAYS_TABLE B
WHERE A.RWYKEY = B.RWYKEY
Run Code Online (Sandbox Code Playgroud)

' ***到目前为止,我所掌握的建议,但是语法错误

     SELECT …
Run Code Online (Sandbox Code Playgroud)

sql ms-access inner-join left-join

18
推荐指数
5
解决办法
8万
查看次数

MySQL INNER JOIN - '='vs'like'

我们在MySQL内连接方面遇到了一些奇怪的问题.基本上,我们在使用'='运算符时会出现奇怪的错误,但使用'like'会使其工作.不幸的是,这是通过ActiveRecord,并没有简单的方法只是在那里打'喜欢',而且我们想要了解这里实际发生了什么.

这是失败的查询:

mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
              ON `versions`.id = `site_versions`.version_id;
Run Code Online (Sandbox Code Playgroud)

这是错误:

ERROR 1296 (HY000): Got error 20008 'Query aborted due to out of query memory'
from NDBCLUSTER
Run Code Online (Sandbox Code Playgroud)

这是有效的查询:

mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
              ON `versions`.id like `site_versions`.version_id;
Run Code Online (Sandbox Code Playgroud)

以下是表格本身的一些细节:

mysql> desc site_versions;
+----------------------+----------+------+-----+---------+----------------+
| Field                | Type     | Null | Key | Default | Extra          |
+----------------------+----------+------+-----+---------+----------------+
| id                   | int(11)  | NO   | PRI | NULL    | auto_increment |
| version_id           | int(11) …
Run Code Online (Sandbox Code Playgroud)

mysql activerecord inner-join

17
推荐指数
1
解决办法
662
查看次数

如何在内连接表上强制索引?

如何在类似于此的查询上强制索引.我需要单独强制foo和bar上的索引.

SELECT foo.*, bar.*
FROM foo
INNER JOIN bar ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
  AND bar.status = 1
Run Code Online (Sandbox Code Playgroud)

mysql inner-join

16
推荐指数
1
解决办法
3万
查看次数

加入融合?

与WHERE子句相反,在连接中进行过滤是否有任何明显的性能参数?

例如,

SELECT blah FROM TableA a
INNER JOIN TableB b
ON b.id = a.id
AND b.deleted = 0
WHERE a.field = 5
Run Code Online (Sandbox Code Playgroud)

相反

SELECT blah FROM TableA a
INNER JOIN TableB b
ON b.id = a.id
WHERE a.field = 5
  AND b.deleted = 0
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢后者,因为我觉得过滤应该在过滤部分(WHERE)中完成,但是有任何性能或其他原因要做任何一种方法吗?

sql-server inner-join

16
推荐指数
1
解决办法
3万
查看次数