如何在php mysql中获取父名?

时间:2012-06-24 10:08:45

标签: php mysql

我有一张桌子:

brand(id, parent_id, name)
       1      0      Apple 
       2      1      Macbook Air
       3      1      Iphone 4S
imgae(id, brand_id, image)
       1      2      mac.png
       2      3      iphone.png

和mysql:

SELECT br.name, img.image FROM image as img
LEFT JOIN brand AS br ON br.parent_id = img.brand_id

结果是:

Macbook Air |   mac.png
Iphone 4S   |   iphone.png

如何从表品牌中获取父名称

Macbook Air |   mac.png     | Apple
Iphone 4S   |   iphone.png  | Apple 

2 个答案:

答案 0 :(得分:3)

SELECT brand.id, brand.name, brandName.name as parentName, images.image FROM brand 
INNER JOIN brand as brandName ON brand.parent_id=brandName.id 
LEFT JOIN images ON brand.id=images.brand_id

我将LEFT JOIN改为INNER JOIN

请再次检查。

答案 1 :(得分:2)

我尝试不使用自引用表,因为你遇到像这样的问题。再看看你的数据库/表格设计。

Manufacture(
 ID
,Name)

Image(
 ID
,Blob
,URL)

Product(
 ID
,ImageID
,ManID
,Name
,Description
)

SQL

Select 
     M.Name as Brand
    ,P.Name as Product
    ,I.URL as ImageURL
FROM 
    Product AS P
JOIN Manufacture AS M ON
    P.ManID = M.ID
LEFT JOIN Image AS I ON
    P.ImageID = I.ID`
希望有所帮助。

PS。我还建议从管理角度分析您的表格。假设您希望删除所有Apple产品,可以从Manufacture表中删除Apple(通过将列IsActive设置为0,并更新SQL以仅选择行WHERE M.IsActive = 1)以删除Apple和所有通过ManID链接的产品。