0

3 番目のテーブルの外部キー Id を持っています (例: (having thirdsubmenu_idof thirdsubmenutable) )。menu_name親テーブルから名前を取得したいmainmenu詳細については、以下のデータベース テーブル構造を参照してください。

データベース構造

 1)Table: mainmenu
    ---------------
     mainmenu_id   PK(primary key)
     menu_name     ..... 

    2)Table: submenu
    -------------------
     submenu_id     PK
     mainmenu_id    FK (foreign key refrences mainmenu table)
     submenu_name   ..... 


    3)Table: thirdsubmenu
    --------------------
      thirdsubmenu_id     PK
      submenu_id          FK (foreign key refrences submenu table)
      thirdsubmenu_name     ........

テーブルmenu_nameから取得するために以下のコードを試しましたが、エラーが発生しています。mainmenu

 //---------------------------get Main Menu Name by thirdsubmenu_id-----------------------------------
function getMainMenuNameOfSubmenu($thirdsubmenu_id)
{
    $this->load->database();   
    $this->db->select('*');
    $query=$this->db->join('mainmenu', 'mainmenu.mainmenu_id = submenu.mainmenu_id', 'left')
           ->join('submenu', 'submenu.submenu_id = thirdsubmenu.submenu_id', 'left')
           ->get_where('thirdsubmenu',array('thirdsubmenu_id'=>$thirdsubmenu_id));  

    return $query->row('menu_name');   
}

私が得ているエラーは次のとおりです。

    A Database Error Occurred

    Error Number: 1054

    Unknown column 'submenu.mainmenu_id' in 'on clause'

    SELECT * FROM (`thirdsubmenu`) LEFT JOIN `mainmenu` ON `mainmenu`.`mainmenu_id` = `submenu`.`mainmenu_id` LEFT JOIN `submenu` ON `submenu`.`submenu_id` = `thirdsubmenu`.`submenu_id` WHERE `thirdsubmenu_id` = '17'

    Filename: D:\xampp\htdocs\system\database\DB_driver.php

    Line Number: 330
4

1 に答える 1

0

親子関係を築く上でのあなたのアプローチは正しくありません。10、20、または 50 のサブメニューを持つことを検討してください。あなたならどうしますか?それぞれのテーブルを作成しますか?

すべての関係を 1 つのテーブルに保持し、各メニューの親を参照する列を追加するだけです。次に、再帰関数を使用して、メニューのすべてのツリーを取得できます。

今、あなたの質問について問題は、あなたが参加thirdsubmenuしていることです。mainmenu次に、submenu`.`mainmenu_idどちらがからの列であるsubmenu かを参照します。そのため、エラーが表示されます。

このコードを試してください:

function getMainMenuNameOfSubmenu($thirdsubmenu_id)
{
    $this->load->database();   
    $this->db->select('*');
    $this->db->from('mainmenu');
    $this->db->join('submenu', 'mainmenu.mainmenu_id = submenu.mainmenu_id', 'left')
           ->join('thirdsubmenu', 'submenu.submenu_id = thirdsubmenu.submenu_id', 'left')
           ->where('thirdsubmenu.thirdsubmenu_id = "' . $thirdsubmenu_id . '"'); 
    $query = $this->db->get();
    return $query->row('menu_name');   
}
于 2013-03-31T14:23:07.077 に答える