prasinos' work memo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SQLの各種JOINと集合演算をRuby風に書くと


いつも忘れてしまうのでメモ

 

SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.b;

 

for row1 in t1

  next unless t1.a

  for row2 in t2

    next unless t2.b

    yield row1 + row2 if t1.a = t2.b

  end

end

 

SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.b;

 

for row1 in t1

  if t1.nil? then

    yield row1

  else

    for row2 in t2

      next unless t2.b


      yield row1 + row2 if t1.a = t2.b

    end

  end

end

 

SELECT * FROM t1 CROSS JOIN t2;

 

for row1 in t1

  for row2 in t2

    yield row1 + row2

  end

end

 

SELECT * FROM t1 UNION ALL SELECT * FROM t2;

 

for row in t1 + t2

  yield row

end

 


SELECT * FROM t1 INTERSECT SELECT * FROM t2;

 

for row in t1 & t2

  yield row

end

 


SELECT * FROM t1 EXCEPT SELECT * FROM t2;

 

for row in t1 - t2

  yield row

end

 

SELECT * FROM t1 UNION SELECT * FROM t2;

 

for row in t1 + (t2 - t1)

  yield row

end

 
 
スポンサーサイト

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。