2012-09-29 75 views
1

我有一個包含類別信息的表。未知複合列名稱

表中有一個標記父類和子類的字段。

我試圖通過查詢列出父類別,然後列出其子類別。

我想是這樣

SELECT 
    CategoryID.categories as ParentID, 
    CategoryName.categories AS ParentName, 
    parents.* 
FROM 
    categories AS parents LEFT JOIN categories AS child 
    ON child.Parent = parents.ParentID 

但遺憾的是它沒有爲我工作。它給了我一個奇怪的錯誤。

[SQL] SELECT CategoryID.categories as ParentID, CategoryName.categories 
AS ParentName, parents.* FROM categories as parents LEFT JOIN categories as child on child.Parent = parents.ParentID 

[Err] 1054 - Unknown column 'CategoryID.categories' in 'field list' 

我確定所有字段的名稱都是正確的。

回答

1

首先,db引擎讀取列[table]。[column],而不是相反。所以它不會理解CategoryID.categories是什麼 - 沒有稱爲CategoryID的表。

你定義你的表是這樣的

 FROM categories AS parents 
LEFT JOIN categories AS child 

因此,你需要用你給他們的名字引用它們。即

SELECT 
     parents.CategoryId as ParentId, 
     child.CategoryId as ChildId, 
     ... 
0

嘗試

SELECT 
    parents.CategoryId AS ParentId, 
    parents.CategoryName AS ParentName, 
    parents.* -- < this is probably child.* 
FROM 
    categories AS child LEFT JOIN categories AS parents 
    ON child.parent = parents.CategoryId 

對SQL的命名約定是[表]。[列]。您首先使用列名稱。

0

SELECT你寫CategoryID.categoriesCategoryName.categories ...的規則是把它寫爲alias name.field name

因此,您會收到錯誤Unknown column 'CategoryID.categories' in 'field list'

我建議你嘗試這樣的 -

SELECT parent.CategoryID as ParentCategory, parent.CategoryName as ParentCatName, 
    child.CategoryID as ChdCategory, child.CategoryName as ChdCatName 
FROM categories AS parents LEFT JOIN categories AS child 
    ON child.Parent = parents.ParentID 

你也可以在這裏查找:mysql joins with alias