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

时间:2016-11-16 10:47:30

标签: mysql select join

我有四张桌子。

**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有点生疏,但我想我需要某种加入。

有人可以根据我的问题给我一些方向吗?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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