我有几个表包含数据库中的不同字段的键值对。我还有一个表,其中包含这些不同表的键,应该选择这些表作为该键的值。但是,我无法弄清楚如何从多个表中选择这些值?
表格
CREATE TABLE CHARACTERS(
ID INTEGER PRIMARY KEY,
NAME VARCHAR(64)
);
CREATE TABLE MEDIA(
ID INTEGER PRIMARY KEY,
NAME VARCHAR(64)
);
CREATE TABLE EPISODES(
ID INTEGER PRIMARY KEY,
MEDIAID INTEGER,
NAME VARCHAR(64)
);
-- Selecting from this table
CREATE TABLE APPS(
ID INTEGER PRIMARY KEY,
CHARID INTEGER,
EPISODEID INTEGER,
MEDIAID INTEGER
);
我从APPS
表中进行选择,并且我想将*ID
列的值替换为包含表NAME
列中名称的值。我想为APPS
表中的每一行完成此操作。像这样......
CHARID -> CHARACTERS.NAME
EPISODEID -> EPISODES.NAME
MEDIAID -> MEDIA.NAME
我曾尝试使用连接,但它们不会对APPS
表中的每一行执行此操作。我在APPS
表中有18行,但是我的表格比我在表中所用的方式还要多,而且比表中的方式还要多。那么如何才能让它为APPS
表中的每一行做到这一点?
答案 0 :(得分:2)
通过JOIN
将表格放在一起并从各个表格中选择所需的列:
SELECT c.name AS character_name, e.name AS episode, m.name AS media
FROM apps a
LEFT JOIN episodes e ON e.id = a.episodeid
LEFT JOIN media m ON m.id = a.mediaid
LEFT JOIN characters c ON c.id = a.charid;
如果要以特定顺序显示行,则可以将其指定为SELECT
语句中的最后一个子句。您可以使用包含的表中的任何字段;该字段不一定是所选列的一部分:
ORDER BY a.id -- order by apps.id
或
ORDER BY e.id, c.name -- order first by episode id, then by character name
等