2

私は2つのテーブルがあります

id   Name    allocation
2    Ash      15
3    Alam     18
4    Rifat    20

Date   Id    Present
24     2     10
24     3     15
25     2     10
25     3     12
25     4     12

今、私は次の結果を得たいです

     Date  Id Alloc   Present
      24   2   15     10        
      24   3   18     15
      24   4   20     NULL
      25   2   15     10
      25   3   18     12
      25   4   20     12

クエリを試しましJOINたが、希望する結果が得られません上記の結果を取得するにはどうすればよいですか?

4

2 に答える 2

4
SELECT 
    t1.id
  , dd.date
  , t1.allocation
  , t2.present 
FROM 
    table1 AS t1                         --- all items
  CROSS JOIN
    ( SELECT DISTINCT date
      FROM table2
    ) AS dd                              --- all dates
  LEFT JOIN
    table2 AS t2                         --- present allocations
      ON  t2.id = t1.id
      AND t2.date = dd.date ;

SQL-Fiddleでテスト済み:テスト(ありがとう@JW)

于 2013-01-26T14:52:32.067 に答える
0

他にも興味深い方法があります。

SELECT 
    t2.date,
    t1.id,
    t1.allocation,
    MAX(CASE WHEN t1.id = t2.id THEN t2.Present ELSE NULL END)
FROM 
    table1 t1, table2 t2
GROUP BY 
    t1.id, t2.date, t1.allocation
ORDER BY 
    t2.date, t1.id

盗難元:値が0のSQLクエリ内部結合

http://www.sqlfiddle.com/#!3/d2ded/44

于 2013-01-26T17:49:54.883 に答える