UINON や UINON ALL を多用しないといけないのは本来1つのテーブルに統合して設計するべきだったことが多いですし、パフォーマンスが悪いです。
title, body は文字型を、priceは数値型を想定しましたが、適切なコメントが付くように質問のテーブル定義はCREATE TABLE文で載せてください。
同じSQLでもデータベースやそのバージョンによって方言が大きいですから、どのデータベースを使うのかを質問のタグで示したり、バージョンも明記した方が適切なコメントが付き易いです。SQLの観点から Oracle Database, PostgreSQL, MySQL の特徴を整理しよう!
以下実行していませんが、
SQL
1SELECT
2 tables
3 , id
4 , created_at
5 , CASE WHEN tables IN('event', 'product') THEN title
6 ELSE body END
7 , user_id
8 , CASE WHEN tables = 'event' THEN title
9 WHEN tables = 'product' THEN TO_CHAR(price) END
10FROM(
11 SELECT 'event' AS tables, id, created_at, title, user_id, body, 0 as price from event
12 UINON ALL
13 SELECT 'product' , id, created_at, ' ' , user_id, ' ' , price from product
14 UINON ALL
15 SELECT 'item' , id, created_at, ' ' , user_id, body, 0 from item
16 )
17ORDER BY created_at
18LIMIT 5;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/21 12:04
2020/09/21 12:53
2020/09/22 02:29