0

表 LSF

ID  LID     FV      TYPE            
28  22      1       INCREMENTAL     
29  22      5       FULL            

表LFG

ID  WHAT    WHERE   TYPE
22  V1      4444    WHITE   

ID 是主键并且是两个表上的序列。

现在我想连接这两个表

SELECT LFG.* FROM LSF sf, LFG fg WHERE sf.LID = fg.ID AND ...

我想从 LSF 表中获取第一行。但是是空的。

如果 SELECT 语句中的 sf.FV 为 1、2、3 或 4,则返回第一行,如果为 5 或更多,则返回表 LSF 的第 2 行。如何写这样的选择?

编辑:

我想要的是?

在表 LSF FV 中,表示从什么时候开始是增量或满的。如果我有版本 1 是 INCREMENTAl,则版本 2、3 或 4 相同。但如果我有版本 5 或更高版本,则为 FULL。

现在我的问题是我没有将每个版本存储在表中,我只是说从这里是增量的,从这里是完整的。我的问题是当我有版本 3 时如何为此编写一个选择语句,如何知道这是从 1 到 5,这意味着增量。

4

5 回答 5

1
SELECT FG.* FROM LSF sf, LFG fg WHERE sf.LID = fg.ID AND sf.fv = (SELECT MAX(fv) FROM LSF WHERE fv<=3)
于 2013-03-26T10:15:36.737 回答
0

...and somehow include sf.FV=3

  SELECT LFG.* FROM LSF sf, LFG fg WHERE sf.LID = fg.ID AND ...
   and I want to get first row from LSF table. But is empty.

从连接中涉及的表中单独选择所需的列。

         select t1.someDate, t1.description, t2.blahblah, t2.someOtherColumn
         from 
         foo as T1
         inner join widget as T2
         on T1.orange = T2.banana
于 2013-03-26T10:21:14.310 回答
0

试试这个查询

SELECT 
  b.*, a.* 
FROM 
  LSF ls,
  LFG b, 
  (SELECT 
     lid, 
     min(ID) as id 
  FROM 
     LSF 
  GROUP BY 
     lid) a
WHERE 
  a.lid = b.id AND a.id = ls.id;
于 2013-03-26T10:14:25.117 回答
0

试一试,看看你是否得到了你想要的东西。它应该返回与为 FV 设置了 1、2、3 或 4 的 LID 匹配的最新版本。

SELECT LFG.* 
FROM LSF sf, LFG fg 
WHERE sf.LID = fg.ID 
AND sf.FV >= 1 
AND sf.FV < 5
ORDER BY sf.FV DESC;
于 2013-03-26T10:11:41.247 回答
0

尝试这个 :)

SELECT LFG.* 
FROM LSF sf, LFG fg 
WHERE sf.LID = fg.ID 
AND sf.Type='INCREMENTAL'
ORDER BY sf.Type DESC;
于 2013-03-26T10:15:38.437 回答