0

私はテーブルを持っています:

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 
4

2 に答える 2

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 に変更しました

再度確認してください。

于 2012-06-24T10:13:05.670 に答える
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 製品を削除したい場合は、製造テーブルから Apple を削除できます (列IsActiveをに設定し0、SQL を更新して行のみを選択するWHERE M.IsActive = 1ことにより)、ManID を介してリンクされた Apple とすべての製品を削除します。

于 2012-06-24T10:24:48.443 に答える