0

データベース内のメニュー項目のリストから多層メニューをまとめようとしています。これが私の質問です。fl =第1レベル、sl=2番目のレベルなど。

クエリは次のとおりです。

SELECT name as flName,id AS flId
FROM menu_items AS m1
WHERE parent_id = 0
INNER JOIN (SELECT name AS slName, id AS slId, parent_id AS slPid FROM menu_items)
m2 ON m1.firstLevelId = m2.parent_id
INNER JOIN (SELECT name AS tlName, id AS tlId, parent_id AS tlPid FROM menu_items)
m3 ON m2.id = m3.parent_id

そして、私が得ているエラーはこれです:

PersistenceException: Query threw SQLException:You have an error in your SQL syntax.  
check the manual that corresponds to your MySQL server version for the right syntax to 
use near 'INNER JOIN (SELECT name AS slName, id AS slId, parent_id AS slPid FROM  
menu_item'

しかし、それは私には有効に見えます、私は知りません..私が以前にサブクエリで結合を行ったことがあることはかなり確かです。私は何か他のことを間違っていますか?

4

1 に答える 1

3

次のように、where句を最後に移動します。

SELECT name as flName,id AS flId
FROM menu_items AS m1 INNER JOIN (
        SELECT name AS slName, id AS slId, parent_id AS slPid FROM menu_items
    ) m2 ON m1.firstLevelId = m2.parent_id
    INNER JOIN (
        SELECT name AS tlName, id AS tlId, parent_id AS tlPid FROM menu_items
    ) m3 ON m2.id = m3.parent_id
WHERE parent_id = 0
于 2012-10-19T23:12:50.903 に答える