我有一张桌子:
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
答案 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
请再次检查。
答案 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链接的产品。