【发布时间】:2018-07-09 16:07:32
【问题描述】:
我有以下表格:
价格输入
- 汽车类型ID
- 人员 ID
- 价格日期
- 价格值
车型
-
身份证
-
车名
人
- 身份证
- 姓名
我想要达到的结果是这个(获取所有人名):
2018 年 6 月 28 日星期四 Andy NULL NULL
2018 年 6 月 28 日星期四皮特奥迪 5000
2018 年 6 月 28 日星期四巴特奥迪 10000
但我拥有的是:
2018 年 6 月 28 日星期四皮特奥迪 5000
2018 年 6 月 28 日星期四巴特奥迪 10000
这是我的查询:
SELECT (
DATENAME(dw, CAST(DATEPART(m, priceDate) AS VARCHAR) + '/' + CAST(DATEPART(d, priceDate) AS VARCHAR) + '/' + CAST(DATEPART(yy, priceDate) AS VARCHAR))
+ ' '+ FORMAT(priceDate, 'dd MMMM yyyy') )as 'Entering Date', p.Name as 'Person Name', CarName as 'CarName' , REPLACE(ap.priceValue,'.',',') as 'Price'
FROM PriceEntry ap
FULL JOIN CarType at
ON ap.CarTypeID = at.id
FULL JOIN Person p
ON ap.PersonId = p.ID
order by priceDate desc
我做错了什么?
编辑
我的数据:
SELECT
* from PriceEntry
WHERE priceDate = '2018-07-09 00:00:00.000'
select count(*) as 'Person count' from person
select count(*) as 'car count' from CarType
我今天使用查询返回的只有 1 行,而我希望今天为所有人返回的行
【问题讨论】:
-
尝试 LEFT OUTER JOIN Person P
-
正确标记!!! MySQL SQL 服务器!!!这是哪一个???
-
LEFT JOIN 返回的行数不会比 FULL JOIN 少吗?
-
我也尝试使用左连接但没有结果(完全连接是我在这里询问之前的最后手段)
-
FULL JOIN 是 LEFT JOIN 和 RIGHT JOIN 的全部,因此将 FULL 减少到 LEFT 不会产生新行。
标签: sql sql-server join