Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
根据活动日期显示mysql表上的特定字段_Mysql_Sql - Fatal编程技术网

根据活动日期显示mysql表上的特定字段

根据活动日期显示mysql表上的特定字段,mysql,sql,Mysql,Sql,假设我有3个表: A) Table UsrHeader ----------------- UsrID | UsrName ----------------- 1 | Abc 2 | Bcd B) Table UsrDetail ------------------------------- UsrID | UsrLoc | Date ------------------------------- 1

假设我有3个表:

A) Table UsrHeader
   -----------------
   UsrID  |  UsrName
   -----------------
   1      |  Abc
   2      |  Bcd

B) Table UsrDetail
   -------------------------------
   UsrID  |  UsrLoc  | Date
   -------------------------------
   1      |  LocA    | 10 Aug 2012
   1      |  LocB    | 15 Aug 2012
   2      |  LocA    | 10 Aug 2012

C) Table Trx
   -----------------------------
   TrxID  |  TrxDate     | UsrID
   -----------------------------
   1      |  10 Aug 2012 | 1
   2      |  16 Aug 2012 | 1
   3      |  11 Aug 2012 | 2
我想做的是将表格显示为:

  ---------------------------------------
  TrxID   |  TrxDate     | UsrID | UsrLoc
  ---------------------------------------
  1       |  10 Aug 2012 | 1     | LocA
  2       |  16 Aug 2012 | 1     | LocB
  3       |  11 Aug 2012 | 2     | LocA
请注意,只有一个用户,但位置不同。这基于指定日期的用户已移动到其他位置的USRDeail表。因此,它应该在每笔交易中显示该日期的用户特定位置

我尝试过此代码,但没有成功:

SELECT trx.TrxID, trx.TrxDate, trx.UsrID, User.UsrName, User.UsrLoc
FROM trx
INNER JOIN
( SELECT UsrHeader.UsrID, UsrHeader.UsrName, UserDetail.UsrLoc
  FROM UsrHeader
  INNER JOIN
  ( SELECT UsrDetail.UsrID, UsrDetail.UsrLoc, UsrDetail.Date
    FROM UsrDetail
  ) AS UserDetail ON UserDetail.UsrID = UsrHeader.UsrID
) AS User ON User.UsrID = trx.UsrID
             AND trx.TrxDate >= User.Date
怎么做?谢谢。

请使用以下命令:

SELECT trx.TrxID, trx.TrxDate, uh.UsrName, ud.UsrLoc
FROM trx 
     INNER JOIN UsrDetail ud ON (trx.UsrId = ud.UsrId)
     INNER JOIN UsrHeader uh ON (trx.UsrId = uh.UsrId)
WHERE ud.Date = (SELECT MAX(t.Date)
                 FROM UsrDetail t
                 WHERE t.UsrId = trx.UsrId
                   AND t.Date <= trx.TrxDate)
下面是一个SQL小提琴。

使用以下命令:

SELECT trx.TrxID, trx.TrxDate, uh.UsrName, ud.UsrLoc
FROM trx 
     INNER JOIN UsrDetail ud ON (trx.UsrId = ud.UsrId)
     INNER JOIN UsrHeader uh ON (trx.UsrId = uh.UsrId)
WHERE ud.Date = (SELECT MAX(t.Date)
                 FROM UsrDetail t
                 WHERE t.UsrId = trx.UsrId
                   AND t.Date <= trx.TrxDate)
这里有一个SQL小提琴