0

トップレベルメニューのidnameparentId 、およびその子を含むテーブルがあります。

--------------------------------------
    id    |    name    |    parentId 
--------------------------------------
    1     |    Color   |       0
--------------------------------------
    2     |    Flower  |       0
--------------------------------------
    3     |    Red     |       1
--------------------------------------
    4     |    pink    |       1
--------------------------------------
    5     |    Rose    |       2
--------------------------------------
    6     |    Lily    |       2
--------------------------------------

そして、これらのレコードをフェッチしたいのですが、結果の配列は次のようになります。

---------------------------------------------------------------
    id    |    Pname    |    parentId  |  child    |   childId
---------------------------------------------------------------
    1     |    Color   |       1      |   Red     |    3
---------------------------------------------------------------
    2     |    Color   |       1      |   Pink    |    4
---------------------------------------------------------------
    3     |    Flower  |       2      |   Rose    |    5
---------------------------------------------------------------
    4     |    Flower  |       2      |   Lily    |    6
---------------------------------------------------------------

私の質問は次のようでした:

SELECT name AS Pname FROM myTbl WHERE id = (SELECT parentId FROM myTbl WHERE parentId = 1 )

しかし、mysqlは#1242と言います-サブクエリは複数の行を返します

誰かがそれを解決できますか?ありがとう..

4

2 に答える 2

2
SELECT t1.id, t1.name AS Pname, 
    t2.parentId, t2.name as child, t2.id as childId
FROM myTbl t1
INNER JOIN myTbl t2 on t1.id = t2.parentId
于 2010-06-01T15:30:13.800 に答える
1

サブクエリが複数の行を返すため、問題が発生します。解決策は、サブクエリが1行のみを返すようにするか、それ以上の行を返すかどうかが問題にならないようにすることです。

しかし、これらは実際にはあなたのテーブルがあなたが望むことを示唆する結果をあなたに与えません

SELECT name AS Pname 
 FROM myTbl 
WHERE id = ( SELECT DISTINCT parentId 
               FROM myTbl 
              WHERE parentId = 1 
           )

また

SELECT name AS Pname 
 FROM myTbl 
WHERE id IN ( SELECT DISTINCT parentId 
                FROM myTbl 
               WHERE parentId = 1 
            )
于 2010-06-01T15:28:54.593 に答える