Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
外部联接Sqlite下的计数_Sql_Sqlite - Fatal编程技术网

外部联接Sqlite下的计数

外部联接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个计数器工作正常,

首先,在所有的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

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 ...