我从此查询中收到以下错误:
select sheet_items.sheet_id, sheet_items.quantity, materials.material, colors.color
from sheet_items, materials
inner join colors
on colors.color_id=sheet_items.color_id
where sheet_items.sheet_id=4 and sheet_items.material_id=materials.material_id
有什么想法吗?提前谢谢!
答案 0 :(得分:1)
你现在的结构方式,你试图用颜色内部连接材料,因此,它不知道你在说什么列..尝试
select sheet_items.sheet_id, sheet_items.quantity, materials.material, colors.color
from materials,sheet_items
inner join colors
on colors.color_id=sheet_items.color_id
where sheet_items.sheet_id=4 and sheet_items.material_id=materials.material_id
答案 1 :(得分:1)
看起来像你的混合预先&发布ANSI92 SQL,尝试...
PRE ANSI92
select sheet_items.sheet_id, sheet_items.quantity, materials.material, colors.color
from sheet_items, materials, colors
where sheet_items.sheet_id=4 and sheet_items.material_id=materials.material_id AND
colors.color_id=sheet_items.color_id
POST ANSI92
select sheet_items.sheet_id, sheet_items.quantity, materials.material, colors.color
from sheet_items
inner join materials
on sheet_items.material_id=materials.material_id
inner join colors
on colors.color_id=sheet_items.color_id
where sheet_items.sheet_id=4
无论哪种方式恕我直言,第二种格式更容易阅读/理解& debug并将在所有SQL平台上运行
答案 2 :(得分:0)
在sheet_items和材质之间的where子句中有一个隐式内连接。你应该从你的where子句中取出它并将它放入你的投影中,这样看起来像这样:
select sheet_items.sheet_id, sheet_items.quantity, materials.material, colors.color from materials
inner join sheet_items on materials.material_id=sheet_items.material_id
inner join colors on colors.color_id=sheet_items.color_id
where sheet_items.sheet_id=4
答案 3 :(得分:0)
不要混淆你做JOIN的方式,它会变得非常混乱。
SELECT sheet_items.sheet_id, sheet_items.quantity, materials.material, colors.color
FROM
sheet_items
INNER JOIN materials ON materials.id=sheet_items.material_id
INNER JOIN colors ON colors.color_id=sheet_items.color_id
WHERE
sheet_items.sheet_id=4