2016-11-16 7 views
0

私は4つのテーブルを持っています。同じIDを持つ3つの異なるテーブルからすべての行を取得

**Users table**  **Books Table**  **Dvds Table**  Toys Table 
use_id    boo_id    dvd_id    toy_id 
use_name   boo_name   dvd_name   toy_name 
        boo_use_id   dvd_use_id   toy_use_id 

3つのテーブルからすべての行を抽出する必要があります。書籍、DVD、おもちゃなどがあります。これらの行のそれぞれから必要なのは、本/ DVD /おもちゃの一意のIDです。

私のSQLは少し錆びますが、私は何らかの結合が必要だと思います。

誰でも私の質問にお答えできますか?

+1

私はあなたの命名規則を掘るません。なぜ 'book'の代わりに' user'と 'boo'の代わりに' use'を使うのですか? 3桁の接頭辞を持つために読むのが難しいですか?また、 'boo_use_id'のような別のテーブルへのkey_pointingがあるときには名前空間が気に入らないようにしてください - これは普通は' user_id'だけであるか、関係を表示して 'users_user_id'にします –

答えて

0

ただ、それらを結合:

SELECT u.*, 
     b.boo_id, 
     d.dvd_id, 
     t.toy_id 
FROM Users u 
JOIN Books b 
ON(u.use_id = b.boo_use_id) 
JOIN DVDs d 
ON(u.use_id = d.dvd_use_id) 
JOIN Toys t 
ON(u.use_id = t.toy_use_id) 
0

私はUNIONはここで最も理にかなっていると思う:

SELECT boo_id, 'book' AS type 
FROM books 
WHERE boo_use_id = 1 
UNION 
SELECT dvd_id, 'dvd' 
FROM dvds 
WHERE dvd_use_id = 1 
UNION 
SELECT toy_id, 'toy' 
FROM toys 
WHERE toy_use_id = 1 
関連する問題