2013-09-30 34 views
1

嗨,作爲標題說我有一個PHP代碼,我在桌子上正常地回顯文章,問題是在這張桌子我只有cat_id該PARENT_ID在其他表中引用..選擇所有項目其中cat_id = x或parent_id = x(父母id不同表格)

"articulos" table 

id | titulo | fecha_evento | descripcion | img | cat_id 

"categoriablog" table 

    id | parent_id 

這是IM的方式讓我查詢

$query1 = "SELECT id,titulo,fecha_evento,descripcion,img FROM articulos WHERE cat_id = 1"; 
    $result = mysql_query($query1); 

我的目標是做這樣的事情,但「PARENT_ID」在其他表

$query1 = "SELECT id,titulo,fecha_evento,descripcion,img FROM articulos WHERE cat_id = 1 OR parent_id = 1"; 
     $result = mysql_query($query1); 
+1

與以往一樣:_please_,爲了你和世界的其他部分:使用'mysql_ *'EXTENSION_ _stop。它已被棄用,並且在不久的將來某個時候將會被刪除。那麼,它應該早在幾年前就被刪除了,但無論如何:[讀取閱讀框](http://www.php.net/mysql_connect)在頁面頂部,並clikc鏈接瞭解有關替代方案( 'PDO'和'mysqli_ *') –

+0

感謝您的信息,我剛剛發現,昨天,對此感到抱歉,生病promess我會研究PDO和mysqli,所以我可以繼續前進,並更新自己 –

回答

2

JOIN兩個表:

SELECT 
    a.id, a.titulo, a.fecha_evento, a.descripcion, a.img 
FROM Article AS a 
INNER JOIN Category AS c ON a.cat_id = c.id 
WHERE a.cat_id = x 
    OR c.parent_id = x 
+0

我得到一個mysql_fetch_assoc()期望參數1是資源。我明白表的名稱必須改變,但我不明白a.cat_id的東西 –

+0

@MonchoChavez - 'a'和'c'被稱爲別名,而不是在整個查詢中寫出全名,它們被使用作爲短名稱,您可以將其刪除並改爲使用全名。它應該工作得很好,你能告訴我你的錯誤是什麼。你有沒有直接在MySQL上試過? –

+0

是的,謝謝你.. mysql_fetch_assoc()期望參數1是資源,布爾給定 –

1

您可以使用子查詢

SELECT id,titulo,fecha_evento,descripcion,img FROM Article 
WHERE cat_id = 1 OR cat_id IN 
(SELECT id from Category where parent_id=1) 

編輯

請注意,此解決方案比由馬哈茂德的答案JOIN解決慢一點點。

+0

哇我真的可以做那很好,讓我試試 –

+0

也許它更快,但你的答案是在我的用戶級別,我可以很好地理解它,jaja,無論如何,我會嘗試使用Mahmoud解決方案,如果它更快,問題是我得到了錯誤,因爲我做不明白他在查詢中究竟做了什麼,我只是有一個想法,謝謝 –

+2

你的編程方法非常好,因爲你真的想了解你正在得到的答案,並試圖使用更好的答案。這種方法將幫助你一路走來,讓你成爲一名優秀的程序員 –