2011-02-25 67 views
0

我正在對每個訪問級別有多個表的系統進行一些維護。在幾個表中搜索一個值PHP + Mysql

我需要在每個表格中驗證一個名爲IID的字段,以便我可以看到該人的訪問級別。

誰言代碼中使用三個獨立的搜索:

$var->exeQuery("SELECT iid FROM leve11 WHERE iid=$iid"); 
$var->exeQuery("SELECT iid FROM leve13 WHERE iid=$iid"); 
$var->exeQuery("SELECT iid FROM leve12 WHERE iid=$iid"); 

我知道,我可以使用JOIN做,但我做錯了什麼,因爲什麼都不會返回。

我是一個noob! :)

+2

這告訴我,有你的數據庫結構有問題,你應該有'SELECT * FROM table WHERE iid = $ id AND level IN(11,12,13)',你爲什麼選擇你的iid,如果你已經有了它:/ – RobertPitt 2011-02-25 17:07:40

+0

他可能希望看看iid是否存在,但我agre e,不需要檢查iid。 – luckytaxi 2011-02-25 17:22:20

回答

0
select 
    t.iid, l1.iid as Level1, l2.iid as Level2, l3.iid as Level3 
from 
    master_table t 
left join 
    level1 l1 on t.iid = l1.iid 
left join 
    level2 l2 on t.iid = l2.iid 
left join 
    level3 l3 on t.iid = l3.iid 
where 
    t.iid = $iid 

用戶已不返回Null作爲結果的任何水平。

0

怎麼是這樣的:

select iid from level1 
inner join level2 on level1.iid = level2.iid 
inner join level3 on level3.iid = level2.iid 
where level1.iid = $iid 
1
 SELECT iid FROM level1 WHERE iid=$iid 
    UNION ALL 
    SELECT iid FROM level2 WHERE iid=$iid 
    UNION ALL 
    SELECT iid FROM level3 WHERE iid=$iid 

,或者如果信息是不同的,你想加入,而不是工會....

SELECT level1.iid, level2.iid, level3.iid FROM level1 
    LEFT JOIN level2 
    ON level1.iid = level2.iid 
    LEFT JOIN level3 
    on level2.idd = level3.iid 
    WHERE iid=$iid