2014-04-27 3 views
0

Я искал в Интернете в течение дня, и ничто, кажется, не работает и не помогает мне.Как присоединиться к одной таблице с другой таблицей несколько раз?

У меня есть таблица со списком пользователей и их идентификаторов и другая таблица, представляющая пользователей, запрещающих использование другого пользователя. Я вставляю идентификаторы пользователя в таблицу запретов вместо своих имен, потому что я хочу нормализовать свою базу данных.

Моя пользовательская таблица выглядит следующим образом:

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/3rds результата с этим:

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

Подробнее о aliasies.

Вы можете включать и те же таблицу несколько раз Addin псевдонимов

Например

FROM bans b 
    JOIN ids as i1 ON b.banner_id = i1.id 
    JOIN ids as i2 ON b.banned_id= i2.id 
Смежные вопросы