Tag: join

在应用左连接之前筛选表

我有2个表格,我想在2个表格连接在一起之前过滤1个表格。 客户表: ╔══════════╦═══════╗ ║ Customer ║ State ║ ╠══════════╬═══════╣ ║ A ║ S ║ ║ B ║ V ║ ║ C ║ L ║ ╚══════════╩═══════╝ 入口表: ╔══════════╦═══════╦══════════╗ ║ Customer ║ Entry ║ Category ║ ╠══════════╬═══════╬══════════╣ ║ A ║ 5575 ║ D ║ ║ A ║ 6532 ║ C ║ ║ A ║ 3215 ║ D […]

在SQL或MySQL中不使用JOIN关键字的连接有什么问题吗?

当我开始编写数据库查询时,我并不知道JOIN关键字,当然我只是扩展了我已经知道的内容,并写下如下的查询: SELECT a.someRow, b.someRow FROM tableA AS a, tableB AS b WHERE a.ID=b.ID AND b.ID= $someVar 现在我知道这和INNER JOIN是一样的,我在代码中查找所有这些查询,并问我自己是否应该重写它们。 有臭味吗?或者他们好吗? 编辑: 我的回答总结 :这个查询没有错,但使用关键字将最有可能使代码更易读/维护。 我的结论是 :我不会改变我的旧查询,但我会改正我的写作风格,并在将来使用关键字。 感谢您的答案!

MySQL多个左连接

我正在尝试为正在处理的网站创build一个新闻页面。 我决定,我想使用正确的MySQL查询(意思是COUNT(id)和连接,而不是多个查询或num_rows。)我正在使用一个PDO包装,应该正常工作,这仍然失败,直接通过MySQL CLI应用程序。 基本上,我有3桌子。 一个持有消息,一个持有评论,一个持有用户。 我的目标是创build一个页面,显示所有(稍后分页)新闻标题,正文,作者和date。 这工作得很好,当我用第二个查询来获得用户名,但后来我决定我宁愿使用JOIN。 所以有什么问题? 那么,我需要两个连接。 一个是获取作者的用户名,另一个是获取评论的数量。 当我只是去作者的用户名,所有的预期工作。 显示新闻表中的所有行(有2个)。 然而,当我为评论行添加第二个LEFT JOIN时,我最终只收到一条来自新闻的logging(记住,有2个)和COUNT(comments.id)给我2(它应该显示1,因为我有每个post的评论。) 我究竟做错了什么? 为什么它只显示一个新闻post,并说有两个评论,有两个新闻post,每个都有一个评论? SELECT news.id, users.username, news.title, news.date, news.body, COUNT(comments.id) FROM news LEFT JOIN users ON news.user_id = users.id LEFT JOIN comments ON comments.news_id = news.id 另外,为了确定另一件事情,我左边的评论是正确的方式来获得所有职位,无论他们是否有意见或不正确的? 或者这是一个正确的join? 哦,最后一件事…如果我将news.news_id = news.id切换到news.id = comments.news_id,我会得到0个结果。

JOIN比WHERE更快吗?

假设我有两个链接的表(一个有一个到另一个的外键): CREATE TABLE Document ( Id INT PRIMARY KEY, Name VARCHAR 255 ) CREATE TABLE DocumentStats ( Id INT PRIMARY KEY, DocumentId INT, — this is a foreign key to table Document NbViews INT ) 我知道,这不是最聪明的做事方式,但这是我能想到的最好的例子。 现在,我想要获得超过500个视图的所有文档。 我想到的两个解决scheme是: SELECT * FROM Document, DocumentStats WHERE DocumentStats.Id = Document.Id AND DocumentStats.NbViews > 500 要么 : SELECT * […]

LINQ在C#中join多个条件

我在C#中有一个LINQ Join语句,有多个条件。 var possibleSegments = from epl in eventPotentialLegs join sd in segmentDurations on new { epl.ITARequestID, epl.ITASliceNumber, epl.DepartAirportAfter, epl.AirportId_Origin, epl.AirportId_Destination } equals new { sd.ITARequestId, sd.SliceIndex, sd.OriginAirport, sd.DestinationAirport } where epl.DepartAirportAfter > sd.UTCDepartureTime and epl.ArriveAirportBy > sd.UTCArrivalTime select new PossibleSegments{ ArrivalTime = sd.arrivalTime }; join无法正常工作。 我究竟做错了什么?

散列连接和合并连接(Oracle RDBMS)之间有什么区别?

在散列连接和合并连接之间性能增益/损失是什么,特别是在Oracle RDBMS中?

完整的外部连接与完全连接

只是玩弄查询和例子,以更好地理解联接。 我注意到,在SQL Server 2008中,以下两个查询给出了相同的结果: SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name SELECT * FROM TableA FULL JOIN TableB ON TableA.name = TableB.name 这些执行完全相同的行动,以产生相同的结果,或者我会碰到一个更复杂的例子不同的结果? 这只是可互换的术语吗?

PostgreSQL查询按天计算/分组,显示没有数据的日子

我需要创build一个返回的PostgreSQL查询 一天 当天发现的物体数量 即使在当天没有find任何物品, 每一天都会出现在结果中 ,这一点很重要。 (之前已经讨论过这个问题,但是在我的具体情况下,我还没有能够解决问题。) 首先,我发现一个SQL查询来生成一个范围的天 ,我可以join: SELECT to_char(date_trunc('day', (current_date – offs)), 'YYYY-MM-DD') AS date FROM generate_series(0, 365, 1) AS offs 结果是: date ———— 2013-03-28 2013-03-27 2013-03-26 2013-03-25 … 2012-03-28 (366 rows) 现在我试图把它join到一个名为“sharer_emailshare”的表中,该表有一个“created”列: Table 'public.sharer_emailshare' column | type ——————- id | integer created | timestamp with time zone message | text to | […]

在Swift中“join”函数的目的

join()在数组中的作用是什么? 什么目的? 在其他语言中,它用于将数组的元素连接到string中。 例如, Ruby Array.join 我已经问了一些关于在Swift数组join ()的问题joinEXC_BAD_ACCESS

为什么STRAIGHT_JOIN如此彻底地改善了这个查询,当它被写入SELECT关键字之后又是什么意思呢?

我有以下的MySql查询: select t1.* from Table1 t1 inner join Table2 t2 on t1.CommonID = t2.CommonID where t1.FilterID = 1 这大约需要30秒的时间,这很奇怪,因为如果我注释掉join或where子句,它会花费不到一秒的时间:即 select t1.* from Table1 t1 where t1.FilterID = 1 要么 select t1.* from Table1 t1 inner join Table2 t2 on t1.CommonID = t2.CommonID 每个不到一秒钟。 然后是STRAIGHT_JOIN关键字,我可以在这里find一个参考: http : //dev.mysql.com/doc/refman/5.0/en/join.html STRAIGHT_JOIN和JOIN类似,只是左边的表总是在右边的表之前被读取。 这可以用于连接优化器以错误的顺序放置表的那些(less数)情况。 什么? 我可以写: select t1.* from Table1 […]