1. ホーム
  2. mysql

[解決済み] MySQLで「一意のテーブル/エイリアスでない」場合

2022-01-25 20:56:28

質問

以下のコードでは テーブル/エイリアスが一意でない:'presentations'

この件に関するいくつかの記事を読み、解決策はテーブルにエイリアスを使用することだと確信しました。ただ、エイリアスをどのように作成するのか、どこに追加すればいいのかがわかりません。

どなたか解説していただけませんか?

ありがとうございました。

SELECT categories.name, categories.sub_name, parts.name
FROM categories
INNER JOIN presentations
ON categories.id=presentations.category
INNER JOIN presentations
ON parts.id=presentations.parts
WHERE presentations.id=5;

解決方法は?

同じテーブルを2回結合しているので、一意の別名が必要です。しかし、あなたは以下のものを探しているようです。 parts テーブルと結合する必要があります。

SELECT 
categories.name, 
categories.sub_name, 
parts.name
FROM categories
INNER JOIN presentations ON categories.id=presentations.category
INNER JOIN parts ON parts.id=presentations.parts
WHERE presentations.id=5;

読みやすくするために、次のような短い別名を付けることができます。

select
c.name,
c.sub_name,
p.name as parts_name
from categories c
join presentations pr on pr.category = c.id
join parts p on p.id = pr.parts
where pr.id = 5