簡體   English   中英

如何將SQL查詢的結果用作另一個查詢中的字段

[英]How to use result of an SQL query as a field in another query

我有2張桌子

  • 租金
  • 實體

實體保存有關可出租物品的信息(租賃服務)租金保存實體的特定租金信息,該信息與指向實體ID的外鍵鏈接:

表:實體

--------------------------
| id |      name         |
--------------------------
| 1  | Toyota Spacewagon |
| 2  | Volvo SuperCar    |

表:租金

---------------------------------------------------------------
| id | entity_id |  rental_date         | return_date         | 
---------------------------------------------------------------
|  1 |      1    |  2016-06-30 12:00:00 | 2016-07-01 12:00:00 | 
|  2 |      1    |  2016-06-28 12:00:00 | 2016-07-30 10:00:00 | 
|  3 |      1    |  2016-05-30 09:00:00 | 2016-06-01 13:00:00 |     

我想做的是獲取所有實體的列表,以及它們的最后租用日期(以確定它們當前的租用狀態),但是我不知道如何在SQL中表達這一點。

我的預期結果:

-------------------------------------------------
| id |      name         |    rental_date       | 
-------------------------------------------------
| 1  | Toyota Spacewagon |  2016-06-30 12:00:00 |
| 2  | Volvo SuperCar    | (null)               |

從未租用的實體應在租車日期返回null,已租用的汽車應最后租車

類似於此,但語法有效...

SELECT id, name rental_date AS (SELECT rental_date FROM rentals WHERE entity_id = THIS_ROW'S_ENTITY) FROM entities;

這樣的事情應該起作用:

SELECT e.Id,e.name,r.rental_date
FROM entities e
LEFT JOIN
(
   SELECT entity_id,MAX(rental_date) AS rental_date
   FROM rentals
   GROUP BY entity_id
) r ON r.entity_id=e.Id

這是一個沒有子查詢的版本:

SELECT a.id, a.name, MAX(b.rental_date) 
FROM entities a 
LEFT JOIN rentals b on a.id = b.entity_id 
GROUP BY a.id, a.name

你可以做:

Select  r.rentedtimes,r.lastrentaled , e.id , e.`name`
from entities e 
left join (
Select count(entity_id) as rentedtimes,id,entity_id,max(return_date) as lastrentaled  
from rentals 
group by entity_id)r
on e.id = r.entity_id
group by e.id;

注意:

我花了一些時間進行此查詢,並在Rentals表中添加了每個實體的出現。 看看這個 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM