2012-04-06 88 views
0

我正在学习mysql,我遇到了一个产生#1066的表的错误 - 错误不是唯一的表别名。我尝试了许多不同的查询,但都具有相同的结果。有人能让我摆脱苦难,帮助指出我做错了什么! - 感谢#1066 - 错误不是唯一表别名

looks 
--------- 

look_id(Pk) 
user_id 
title 
description 
date_modified 

Add_Look_Item 
----------------------- 

look_id (fk from table 1) 
item_id (fk from table 3) 

Item 
-------------- 

item_id (pk) 
name 
details 

Add_Images 
------------------- 
image_id (pk) 
item_id (fk from table 3) 
image_name 

查询我曾尝试 - add_look_item是一个复合键

SELECT DISTINCT looks.look_id, looks.title, looks.date_modified, add_look_item.item_id,  add_images.image_name FROM looks JOIN add_look_item ON add_look_item.look_id = looks.look_id 
JOIN add_look_item ON add_look_item.item_id = item.item_id WHERE look.user_id = 94 

#1066 - error not unique table alias 'add_look_item 

SELECT DISTINCT looks.look_id, looks.title, looks.date_modified, add_look_item.item_id,  add_images.image_name FROM looks JOIN 
add_look_item ON add_look_item.looks_id = look.look_id 
JOIN add_look_item ON add_look_item.item_id = item.item_id 
JOIN add_images ON add_images.item_id = item.item_id WHERE add_look_item.item_id = item.item_id AND look.user_id = 94 

#1066 - error not unique table alias 'add_look_item 

SELECT DISTINCT looks.look_id, looks.title, looks.date_modified, add_look_item.item_id, add_images.image_name FROM looks INNER JOIN add_look_item ON add_look_item.look_id = look_look_id 
INNER JOIN add_images ON add_images.item_id = item.item_id 
INNER JOIN add_look_item ON add_look_item.item_id = item.item_id 
WHERE look.user_id = 94 

#1066 - error not unique table alias 'add_look_item 

SELECT DISTINCT looks.look_id, looks.title, looks.date_modified, add_look_item.item_id, add_images.image_name FROM looks 
INNER JOIN add_look_item ON add_look_item.looks_id = look.look_id 
INNER JOIN add_images ON add_images.item_id = item.item_id 
INNER JOIN add_look_item ON add_look_item.item_id = item.item_id 
WHERE add_look_item.item_id = item.item_id AND look.user_id = 94 


#1066 - error not unique table alias 'add_look_item 

SELECT DISTINCT looks.look_id, looks.title, looks.date_modified, add_look_item.item_id, add_images.image_name FROM looks 
INNER JOIN add_look_item ON add_look_item.looks_id = look.look_id 
INNER JOIN add_images ON add_images.item_id = item.item_id 
WHERE add_look_item.item_id = item.item_id AND look.user_id = 94 

#1054 - Unknown column 'item.item_id' in 'where clause' 

感谢

+0

你到底想干什么? – 2012-04-06 10:02:21

+0

我需要这些值looks.look_id,looks.title,looks.date_modified,add_look_item.item_id,add_images.image_name,谢谢 – Alan 2012-04-06 10:08:59

+0

为什么加入同一个表多次,如果你只是想要吗? – 2012-04-06 10:10:29

回答

1

试试这个是什么 -

SELECT looks.look_id, looks.title, looks.date_modified, add_look_item.item_id, add_images.image_name 
FROM looks 
JOIN add_look_item 
    ON looks.look_id = add_look_item.look_id 
JOIN add_images 
    ON add_look_item.item_id = add_images.item_id 
WHERE look.user_id = 94 
+0

感谢nnichols,但返回#1054 - 'on子句'中的未知列'ali1.item_id'必须是因为ali1尚未设置? – Alan 2012-04-06 10:22:23

+0

对不起。错字。我已经更新了我的答案。 – nnichols 2012-04-06 10:23:35

+0

谢谢工作!想想我现在可以看到我一直在哪里出错了 – Alan 2012-04-06 10:26:49

1

,因为你是多次加入使它的add_look_item的别名。

例如:

SELECT tbl.a, a.y, b.y 
FROM tbl 
JOIN tbl2 as a ON tbl.x = a.x 
JOIN tbl2 as b ON tbl.x = b.x 

否则查询引擎将不知道做:)

+0

谢谢你的答案,请你详细说明一下,谢谢 – Alan 2012-04-06 10:07:53

+0

@Alan:这个答案是由[cairnz]提供的(http://stackoverflow.com/users/277337/cairnz)我刚刚格式化了查询 – sll 2012-04-06 10:11:12

+0

@ cairnz谢谢;) - 请你说清楚一点,因为我很难理解你的意思! – Alan 2012-04-06 10:15:39

相关问题