2016-07-31 26 views
-1

データベースを作成しましたが、JOINのコードを実行しようとしています。私はエラーを受け取らないが、結果も返さない。以下は、私がテーブルに挿入した行を含めて思いついたコードです。データベースを作成し、結合コードが結果を返しません

INSERT INTO USERS(EmailAddress, FirstName, LastName) 
VALUES 
    ('[email protected][enter image description here][1]l.com', 'John', 'Smith'), 
    ('[email protected]', 'Jane', 'Doe') 

INSERT INTO Downloads(FileName, DownloadDate) 
VALUES 
    ('pedals_are_falling.mp3', GETDATE()), 
    ('turn_signal.mp3', GETDATE()), 
    ('one_horse_town.mp3', GETDATE()) 

INSERT INTO Product(ProductName) 
VALUES 
    ('Local Music Vol 1'), 
    ('Local Music Vol 2') 

SELECT EmailAddress AS email_address, 
     FirstName AS first_name, 
     LastName AS last_name, 
     DownloadDate AS download_date, 
     FileName, 
     ProductName AS product_name 
FROM Downloads JOIN Users 
ON Downloads.UserID = Users.UserID 
JOIN Product 
ON Product.ProductID = Downloads.ProductID 
ORDER BY EmailAddress; 
+2

userID/productIDのダウンロードにJOINする場合は、このテーブルにこれらのフィールドが必要です(挿入物にはそれらは含まれません)。この場合、私はそれがあなたのSELECTに基づいているように、1対1の関係であると仮定します。テーブルの名前に基づいている多対多の多対多が必要な場合は、UserDownloadsのような中間テーブルを必要とするよりも、userIDとdownloadIDを入れてから参加する必要があります。 – StormoPL

+0

どのDBMSを使用していますか? –

+0

挿入に 'UserID'列はありません。 –

答えて

0

エラーが発生しないと言うので、クエリで参照される結合列が存在すると仮定します。しかし、INSERTステートメントで値を指定しているわけではありません。

テーブルの実際のデータを見てください。なぜなら、結合が一致する行を見つけられない理由を明確にする必要があると思います。

これらの列に値がないか、各挿入時に値を自動生成しています。どちらの方法でも、あなたのインサートには、どのダウンロードがどのユーザーにつながるか、どの製品がどのダウンロードに対応するかを示すものはありません。

関連する問題