2016-11-16 90 views
0

我有四个表。获取三个不同表中包含相同ID的所有行

**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 

我需要从三个表中提取所有行;包含use_id的书籍,dvd和玩具。我所需要的每一行都是书籍/ dvd /玩具的唯一ID。

我的SQL有点生疏,但我想我需要某种加入。

任何人都可以给我一些方向请在我的查询?

+1

我不挖你的命名约定。为什么'use'而不是'user'和'boo'而不是'book'?难以阅读有3位数字的前缀?当你有一个key_pointing到另外一个表,比如'boo_use_id'时,也不喜欢这个名字空间 - 这通常只是'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 
相关问题