1

私はホームと呼ばれるビューを持っています:

CREATE VIEW `skohr`.`Home` AS
Select Song_OID, Song_Name, Album_Name, Artist_First_Name, Artist_Last_Name, Band_Name, Genre, Album_Art_File_Path
From Song, Album, Artist, Track_Number, Made
Where Song_OID = Track_Number.Song_OID_FK AND Album_OID=Track_Number.Album_OID_FK AND Album_OID=Made.Album_OID_FK AND Artist_OID=Made.Artist_OID_FK
ORDER BY Song_Name Asc

ビューで次のクエリを実行して、目的のテーブルを取得しました。

Select DISTINCT * From Home LEFT OUTER JOIN (SELECT * FROM Song_Setting, user WHERE User_OID=User_OID_FK) AS UserSongs
ON Song_OID=Song_OID_FK

2 つの別個のクエリを 1 つに結合して 1 つのビューを作成するにはどうすればよいですか?

4

2 に答える 2

1

ビューを作成してみてください

CREATE VIEW `skohr`.`MyNewView` AS

Select DISTINCT * From Home h
LEFT OUTER JOIN Song_Setting x
    ON h.Song_OID_FK = x.Song_OID
INNER JOIN user u
    ON u.User_OID = x.User_OID_FK  
于 2012-12-03T22:10:39.553 に答える
-1

::MySQL のバージョンを要求するコメントへの応答::

今日は特に MySQL を使用していませんが、他のデータ セットのようにサブクエリを使用できない理由はありますか? このようなもの:

Select DISTINCT * From 
(
    Select Song_OID, Song_Name, Album_Name, Artist_First_Name, Artist_Last_Name, Band_Name, Genre, Album_Art_File_Path
    From Song, Album, Artist, Track_Number, Made
    Where Song_OID = Track_Number.Song_OID_FK AND Album_OID=Track_Number.Album_OID_FK AND Album_OID=Made.Album_OID_FK AND Artist_OID=Made.Artist_OID_FK
) as a
LEFT OUTER JOIN (SELECT * FROM Song_Setting, user WHERE User_OID=User_OID_FK) AS b
ON a.Song_OID=b.Song_OID_FK

それが MySQL でうまくいかない場合は、一時テーブルやメモリ内テーブルの使用を検討する必要があると思います。そこで、MySQL で一時テーブルを作成する方法を調べて、一時テーブルを作成し、以下の CTE でキャプチャしたサブクエリを入力してから、それを他のクエリに結合します。

これが SQL Server の場合、CTEを利用できます

次のコードをビューにドロップするだけで、必要なものが得られます。

WITH Home AS 
(
Select Song_OID, Song_Name, Album_Name, Artist_First_Name, Artist_Last_Name, Band_Name, Genre, Album_Art_File_Path
From Song, Album, Artist, Track_Number, Made
Where Song_OID = Track_Number.Song_OID_FK AND Album_OID=Track_Number.Album_OID_FK AND Album_OID=Made.Album_OID_FK AND Artist_OID=Made.Artist_OID_FK
)
Select DISTINCT * From Home 
LEFT OUTER JOIN (SELECT * FROM Song_Setting, user WHERE User_OID=User_OID_FK) AS UserSongs
ON Song_OID=Song_OID_FK
于 2012-12-03T22:15:28.477 に答える