2010-03-17 29 views
0

我的SQL查询只返回父我需要它来回报父母和子女,我的SQL查询只返回子我需要家长藏汉

public function getNav($cat,$subcat){ 
    //gets all sub categories for a specific category 
    if(!$this->checkValue($cat)) return false; //checks data 

    $query = false; 
    if($cat=='NULL'){ 
     $sql = "SELECT itemID, title, parent, url, description, image 
       FROM p_cat 
       WHERE deleted = 0 
       AND parent is NULL 
       ORDER BY position;"; 
     $query = $this->db->query($sql) or die($this->db->error); 
    }else{ 
     //die($cat); 
     $sql = "SET @parent = (SELECT c.itemID FROM p_cat c WHERE url = '".$this->sql($cat)."' AND deleted = 0); 

       SELECT c1.itemID, c1.title, c1.parent, c1.url, c1.description, c1.image, (SELECT c2.url FROM p_cat c2 WHERE c2.itemID = c1.parent LIMIT 1) as parentUrl 
       FROM p_cat c1 
       WHERE c1.deleted = 0 
       AND c1.parent = @parent 
       ORDER BY c1.position;"; 
     $query = $this->db->multi_query($sql) or die($this->db->error); 
     $this->db->store_result(); $this->db->next_result(); 
     $query = $this->db->store_result(); 
    } 
    return $query; 
} 
+0

只要确保第6行,你真的想对一个字符串卫生组织进行比较e值恰好是'NULL'而不是NULL值。可能存在的错误或混乱。我不知道这个问题直接相关。 – Chad 2011-06-24 22:19:28

回答

0

可能是:

"SET @parent = (SELECT c.itemID FROM p_cat c WHERE url = '".$this->sql($cat)."' AND deleted = 0); 

       SELECT c1.itemID, c1.title, c1.parent, c1.url, c1.description, c1.image, (SELECT c2.url FROM p_cat c2 WHERE c2.itemID = c1.parent LIMIT 1) as parentUrl 
       FROM p_cat c1 
       WHERE c1.deleted = 0 
       AND (c1.parent = @parent OR c1.itemID = @parent) 
       ORDER BY c1.position;" 
+0

我想展示所有不相关的父母? – Udders 2010-03-17 14:27:10

+0

所有的父母?我认为添加OR c1.parent IS NULL – Andrey 2010-03-17 14:41:40

0

刚刚加入p_cat表回本身:

SELECT c1.itemID, c1.title, c1.parent, c1.url, c1.description, c1.image 
    , parents.itemID, parents.parent, parents.url, parents.description, parents.image, 
FROM p_cat c1 
    Inner Join p_cat parents 
     On parents.id = C1.parent 
WHERE c1.deleted = 0 
    AND c1.parent = @parent 
ORDER BY c1.position