我有两个类似这样的表:
主表:id(int)、title(varchar)等子表:main_table_id(主表的外键)、tag(varchar)等
主表中的给定行可以有零个或多个子表行。
我想做一个查询,将返回主表的每一行,主表的列,以及子表的单行(无关紧要)的列,如果有的话,否则在这些列中为 NULL。
当然,如果我只是做一个基本的 LEFT OUTER JOIN 那么我当然会多次重复主表,子表中的每个匹配项都重复一次。
我确定我在使用 LEFT OUTER JOIN 和某种强制只从子表中选择一行而不是所有行的技巧之前已经看到过这样做了——也许选择最小或最大 OID。然而,一个多小时的谷歌搜索并没有产生任何解决方案。
有人在他们的工具带中有这个技巧吗?
我正在尝试以下查询,
DECLARE @EntityType varchar(25)
SET @EntityType = 'Accessory';
WITH Entities (
E_ID, E_Type,
P_ID, P_Name, P_DataType, P_Required, P_OnlyOne,
PV_ID, PV_Value, PV_EntityID, PV_ValueEntityID,
PV_UnitValueID, PV_UnitID, PV_UnitName, PV_UnitDesc, PV_MeasureID, PV_MeasureName, PV_UnitValue,
PV_SelectionID, PV_DropDownID, PV_DropDownName, PV_DropDownOptionID, PV_DropDownOptionName, PV_DropDownOptionDesc,
RecursiveLevel
)
AS
(
-- Original Query
SELECT dbo.Entity.ID AS E_ID, dbo.EntityType.Name AS E_Type,
dbo.Property.ID AS P_ID, dbo.Property.Name AS P_Name, DataType.Name AS P_DataType, Required AS P_Required, OnlyOne AS P_OnlyOne,
dbo.PropertyValue.ID AS PV_ID, dbo.PropertyValue.Value AS PV_Value, dbo.PropertyValue.EntityID AS PV_EntityID, dbo.PropertyValue.ValueEntityID AS PV_ValueEntityID,
dbo.UnitValue.ID AS PV_UnitValueID, dbo.UnitOfMeasure.ID …Run Code Online (Sandbox Code Playgroud) 例如,我有这两个数据框:
dates = c('2020-11-19', '2020-11-20', '2020-11-21')
df1 <- data.frame(dates, area = c('paris', 'london', 'newyork'),
rating = c(10, 5, 6),
rating2 = c(5, 6, 7))
df2 <- data.frame(dates, area = c('budapest', 'moscow', 'valencia'),
rating = c(1, 2, 1))
Run Code Online (Sandbox Code Playgroud)
> df1
dates area rating rating2
1 2020-11-19 paris 10 5
2 2020-11-20 london 5 6
3 2020-11-21 newyork 6 7
> df2
dates area rating
1 2020-11-19 budapest 1
2 2020-11-20 moscow 2
3 2020-11-21 valencia 1
Run Code Online (Sandbox Code Playgroud)
使用 dplyr 执行外连接时:
df <- …Run Code Online (Sandbox Code Playgroud) 动画宽度切换时,它不是动画填充,所以我查看.outerWidth(),但我不确定如何实现这个...
$('#shareheart').click(function(){
$('.share-text').animate({outerWidth: 'toggle'}, 2000)
})
Run Code Online (Sandbox Code Playgroud) 谢谢,你能帮助我吗,我正在迁移一个应用程序并转到mysql 5.5非常慢的查询返回非常感谢你的帮助.
SELECT DISTINCT b.cc46_cc55_field_id_id AS row_id, t0.cc46_value AS f_264, t1.cc46_value AS f_265, t2.cc46_value AS f_266
FROM tc46_fields_values b
LEFT OUTER JOIN tc46_fields_values t0 ON b.cc46_cc55_field_id_id = t0.cc46_cc55_field_id_id
AND t0.cc46_cc26_field_id = 264
LEFT OUTER JOIN tc46_fields_values t1 ON b.cc46_cc55_field_id_id = t1.cc46_cc55_field_id_id
AND t1.cc46_cc26_field_id = 265
LEFT OUTER JOIN tc46_fields_values t2 ON b.cc46_cc55_field_id_id = t2.cc46_cc55_field_id_id
AND t2.cc46_cc26_field_id = 266
WHERE b.cc46_cc55_field_id_id IN (5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000,6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6162,6163,6164,6165,6166)
Run Code Online (Sandbox Code Playgroud) 我有两个类映射我的数据库的两个表:
public class Product
{
public int Id { get; set; }
public string Token { get; set; }
public string Name { get; set; }
public decimal Value { get; set; }
}
public class Ticket
{
public int Id { get; set; }
public string SerialNumber { get; set; }
public string ProductToken { get; set; }
public Product Product { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
由于某些域名原因,产品和故障单在逻辑上是链接的,换句话说,它们没有链接在可由EF映射的数据库关系中,它们将在我的应用程序中链接一个"必须"翻译成的linq查询SQL外左连接.从这里,我做了以下查询:
IQueryble<Ticket> query = from ts in context.Tickets
join ps in context.Products
on …Run Code Online (Sandbox Code Playgroud) 我有以下查询
SELECT *
FROM tableA, tableB
WHERE Conditions [+]
Run Code Online (Sandbox Code Playgroud)
这个关键字条件[+]代表什么?此查询如何表现为外部联接?
我正在尝试使用连接从一个SQL语句中获取2个表中的数据.这个想法很简单.项目有参与者,在项目概述中,我想用参与者的数量显示项目信息.
现在有2个项目,一个项目有参与者,另一个项目没有参与者.
我用这个查询:
SELECT SQL_CALC_FOUND_ROWS `p`.`id`,
`p`.`title`,
`p`.`live`,
`p`.`startDate`,
`p`.`endDate`,
COUNT(`part`.`id`) AS `participants`
FROM `projects` `p`
LEFT OUTER JOIN `participants` `part`
ON `p`.`id` = `part`.`projectid`
ORDER BY `p`.`live` DESC,
`p`.`startDate` DESC
LIMIT 0,10
Run Code Online (Sandbox Code Playgroud)
问题是,此查询仅返回带有参与者的项目,而没有参与者的项目则被忽略.
我在这做错了什么?
考虑以下两个示例表
表1:“用户”
ID REGISTER_TIME FIRSTNAME LASTNAME OPERATION_ID
1 1401789877 John Doe 29
2 1401789879 Jack Doe 29
3 1401789878 Pete Doe 29
Run Code Online (Sandbox Code Playgroud)
(请注意,register_time列存储为INT(11))
表2:“ calendar_days”
ID DAY
1 2011-01-01
... ....
n 2030-31-12
Run Code Online (Sandbox Code Playgroud)
我有以下运行良好的MySQL查询:
SELECT d.day, COUNT(d.day)
FROM calendar_days AS d
LEFT OUTER JOIN users AS l ON DATE(FROM_UNIXTIME(l.`register_time`)) = d.day
WHERE l.`operation_id` = 29
GROUP BY d.day;
Run Code Online (Sandbox Code Playgroud)
但这并不能保留count等于零的日子:
day;COUNT(d.day)
2014-05-07;1
2014-05-09;1
2014-05-12;11
2014-05-13;2713
2014-05-14;2631
Run Code Online (Sandbox Code Playgroud)
我想要的是 :
2014-05-07;1
**2014-05-08;0**
2014-05-09;1
2014-05-12;11
2014-05-13;2713
2014-05-14;2631
Run Code Online (Sandbox Code Playgroud)
我觉得我离真相很近,我已经尝试过任何可能的左外连接,右外连接,但仍然没有空结果。