我在互联网上搜索了一天,似乎没有任何工作/帮助我。
我有一个表,其中包含用户及其ID的列表,另一个表表示用户禁止其他用户。我将用户ID插入禁止表而不是他们的名字,因为我想规范化我的数据库。
我的用户表如下所示:
CREATE TABLE IF NOT EXISTS `ids` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(32) NOT NULL
) ENGINE = INNODB;
我的禁令表看起来像这样:
CREATE TABLE IF NOT EXISTS `bans` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`banner_id` INT UNSIGNED,
`banned_id` INT UNSIGNED NOT NULL,
`reason` VARCHAR(256) DEFAULT NULL
) ENGINE = INNODB;
我想为我的禁令表做一个全选,但是它很容易阅读。 理想情况下它看起来像:
+-------------+-------------+-----------+
| banner_name | banned_name | reason |
+-------------+-------------+-----------+
| person A | person B | being bad |
...
但我无法达到这个结果。我只能得到2/3的结果:
SELECT ids.name AS banner_name, bans.reason
FROM bans LEFT JOIN (ids) ON (bans.banner_id = ids.id);
然而,添加其他名称列对我来说已经证明是棘手的。 This看起来像一个类似的问题,但是当我试图按照这个例子时,我会得到一些类似
的内容ERROR 1054 (42S22): Unknown column 'ids.name' in 'field list'
或其他一些语法错误。
感谢您阅读!
答案 0 :(得分:0)
了解别名。
您可以多次添加同一个表addin别名
例如
FROM bans b
JOIN ids as i1 ON b.banner_id = i1.id
JOIN ids as i2 ON b.banned_id= i2.id