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
Mysql 下面的SQL查询_Mysql_Sql_Oracle_Sequelpro - Fatal编程技术网

Mysql 下面的SQL查询

Mysql 下面的SQL查询,mysql,sql,oracle,sequelpro,Mysql,Sql,Oracle,Sequelpro,表A具有当前的值A和值B: Token ValueA ValueB ABC SHOP Val1 DEF SHOP Val2 GHI SHIPP Val3 JKL SHIPP Val2 表B包含所有数据转换: Token Value Value2 Date Express

表A具有当前的
值A
值B

Token     ValueA     ValueB 
ABC        SHOP Val1      
DEF        SHOP         Val2
GHI         SHIPP        Val3
JKL         SHIPP         Val2
表B包含所有数据转换:

Token      Value         Value2         Date                         Express
ABC     SHOP    Val1               2020-01-01             Yes
ABC.        SHOP       Val2               2020-02-01             Yes
ABC         SHIPP.      Val3               2020-03-01              Yes 
DEF          SHOP       Val1               2020-05-01               No
DEF          SHIPP       Val2               2020-04-01              No
DEF          SHIPP.      Val3               2020-03-01               No
我希望我的结果应包括表A中的最新数据,但增加表B中的具体日期:

Token     ValueA       Val1 Date       Val2 Date
ABC        SHOP . 2020-01-01       2020-02-01
DEF        SHOP          2020-05-01.      2020-04-01   
GHI         SHIPP         NULL          NULL
JKL         SHIPP        NULL           NULL
我的查询未按预期返回结果:

SELECT a.token,
              A.valueA,
              A.valueB,
              B.Express
       c.Date "SHOP DATE",
       d.Date “SHIP DATE"
FROM TableA A 
LEFT JOIN TABLEB B ON A.Token = B.Token
LEFT JOIN TABLEB C ON A.Token = B.Token
LEFT JOIN TABLEB D ON A.Token = B.Token
WHERE (c.value = ‘SHOP’ AND c.value2 = ‘Val1’)
  AND (c.value = ‘SHIP’ AND c.value2 = ‘Val13)
GROUP BY a.token
ORDER BY b.date DESC;
查询结果:

Token     ValueA       Val1 Date       Val2 Date
ABC        SHOP . 2020-01-01       2020-02-01
DEF        SHOP          2020-05-01.      2020-04-01   

WHERE
条件移动到
JOIN
中:

SELECT a.token,
              A.valueA,
              A.valueB,
              B.Express
       c.Date "SHOP DATE",
       d.Date "SHIP DATE"
FROM TableA A 
LEFT JOIN TABLEB B 
ON A.Token = B.Token

LEFT JOIN TABLEB C 
ON A.Token = B.Token
AND c.value = 'SHOP' AND c.value2 = 'Val1'
AND c.value = 'SHIP' AND c.value2 = 'Val3'

LEFT JOIN TABLEB D 
ON A.Token = B.Token

GROUP BY a.token
ORDER BY b.date DESC;
注意:该标记仅适用于Ruby ORM。另外,请努力想出一个更具描述性的标题。请参阅“”及其链接页面。“写一个标题,总结具体问题”。