外部联接Sqlite下的计数
首先,在所有的Tbl_InOut左边加入Tbl_票,然后 Tbl_Location LEFT JOIN with Tbl_Ticket这是结果,现在我想计算从\u LocationID到\u Location的数据量 示例票证编号1,2,3,4,5是从位置ID 1到位置ID 3总计为5,因此在“到”名称列旁边将再添加一个列名TotalCount,TotalCount列下的这5行的值为5,我不会解释的越少,请参见上面的图片,我已经添加了TotalCount列和我想要的值 编辑 1个计数器工作正常,但是,2个计数数据将变为双倍,如何解决,这是我的SQL外部联接Sqlite下的计数,sql,sqlite,Sql,Sqlite,首先,在所有的Tbl_InOut左边加入Tbl_票,然后 Tbl_Location LEFT JOIN with Tbl_Ticket这是结果,现在我想计算从\u LocationID到\u Location的数据量 示例票证编号1,2,3,4,5是从位置ID 1到位置ID 3总计为5,因此在“到”名称列旁边将再添加一个列名TotalCount,TotalCount列下的这5行的值为5,我不会解释的越少,请参见上面的图片,我已经添加了TotalCount列和我想要的值 编辑 1个计数器工作正常,
SELECT
Ticket_No,
_id,
Date_Add,
trip_no,
f.Location_Name AS FromName,
From_LocationID,
To_LocationID,
t.Location_Name AS ToName
FROM Tbl_InOut
LEFT JOIN Tbl_Ticket
ON Tbl_InOut._id = Tbl_Ticket.Trip_ID
LEFT JOIN Tbl_Location AS f
ON f.Location_ID = Tbl_Ticket.From_LocationID
LEFT JOIN Tbl_Location AS t
ON t.Location_ID = Tbl_Ticket.To_LocationID
UNION ALL
SELECT Ticket_No,
_id,
Date_Add,
trip_no,
f.Location_Name AS FromName,
From_LocationID,
To_LocationID,
t.Location_Name AS ToName
FROM Tbl_Ticket
LEFT JOIN Tbl_InOut
ON Tbl_InOut._id = Tbl_Ticket.Trip_ID
LEFT JOIN Tbl_Location AS f
ON f.Location_ID = Tbl_Ticket.From_LocationID
LEFT JOIN Tbl_Location AS t
ON t.Location_ID = Tbl_Ticket.To_LocationID
您可以使用相关子查询计算匹配的记录数:
SELECT
Ticket_No,_id,Date_Add, trip_no,f.Location_Name as FromName,From_LocationID,To_LocationID,t.Location_Name as ToName,PriceType_ID,Amount,
(SELECT COUNT(*) FROM Tbl_Ticket WHERE Trip_ID = Tbl_InOut._id AND Tbl_Ticket.From_LocationID = f.Location_ID AND t.Location_ID = Tbl_Ticket.To_LocationID AND Tbl_Ticket.PriceType_ID = 0) AS NormalCount,
(SELECT COUNT(*) FROM Tbl_Ticket WHERE Trip_ID = Tbl_InOut._id AND Tbl_Ticket.From_LocationID = f.Location_ID AND t.Location_ID = Tbl_Ticket.To_LocationID AND Tbl_Ticket.PriceType_ID > 0) AS DiscountCount
FROM Tbl_InOut
LEFT JOIN Tbl_Ticket ON Tbl_InOut._id = Tbl_Ticket.Trip_ID
LEFT JOIN Tbl_Location as f On f.Location_ID = Tbl_Ticket.From_LocationID
LEFT JOIN Tbl_Location as t On t.Location_ID = Tbl_Ticket.To_LocationID
UNION ALL
SELECT
Ticket_No,_id,Date_Add, trip_no,f.Location_Name as FromName,From_LocationID,To_LocationID,t.Location_Name as ToName ,PriceType_ID,Amount,
(SELECT COUNT(*) FROM Tbl_Ticket WHERE Trip_ID = Tbl_InOut._id AND Tbl_Ticket.From_LocationID = f.Location_ID AND t.Location_ID = Tbl_Ticket.To_LocationID AND Tbl_Ticket.PriceType_ID = 0) AS NormalCount,
(SELECT COUNT(*) FROM Tbl_Ticket WHERE Trip_ID = Tbl_InOut._id AND Tbl_Ticket.From_LocationID = f.Location_ID AND t.Location_ID = Tbl_Ticket.To_LocationID AND Tbl_Ticket.PriceType_ID > 0) AS DiscountCount
FROM Tbl_Ticket
LEFT JOIN Tbl_InOut ON Tbl_InOut._id = Tbl_Ticket.Trip_ID
LEFT JOIN Tbl_Location as f On f.Location_ID = Tbl_Ticket.From_LocationID
LEFT JOIN Tbl_Location as t On t.Location_ID = Tbl_Ticket.To_LocationID
目前尚不清楚“数据加倍”是什么意思。举个例子,不要在两个不同的问题上重复使用同一个问题。
SELECT
...,
(SELECT COUNT(*)
FROM Tbl_Ticket
WHERE Trip_ID = Tbl_InOut._id
) AS TotalCount
FROM ...