簡體   English   中英

如何將一個表與另一個表多次連接?

[英]How do I join one table with another table more than once?

我在互聯網上搜尋了一天,似乎沒有任何作用/對我有幫助。

我有一個表,其中包含用戶及其ID的列表,以及代表用戶禁止其他用戶的另一個表。 我要將用戶ID而不是用戶名插入bans表中,因為我想規范化數據庫。

我的用戶表如下所示:

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);

但是,添加其他名稱列對我來說很難。 看起來像是一個類似的問題,但是當嘗試遵循該示例時,我得到了一些類似的信息

ERROR 1054 (42S22): Unknown column 'ids.name' in 'field list'

或其他語法錯誤。

感謝您的閱讀!

閱讀有關別名的信息。

您可以多次包含同一表的插件別名

例如

FROM bans b 
  JOIN ids as i1 ON b.banner_id = i1.id
  JOIN ids as i2 ON b.banned_id= i2.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM