我有一個數據庫結構,這樣MySQL查詢到從給定父的子類別
CATEGORIES
ID | parent_id | name
1 | 0 | sports
2 | 1 | football
3 | 1 | tennis
4 | 0 | activities
5 | 4 | hiking
etc.
NEWS
ID | category_id | title | date | etc
1 | 2 | Football is great | 2012-12-21 |
2 | 3 | Tennis is healthy | 2012-11-13 |
3 | 5 | Go on hiking | 2013-11-15 |
現在,當我想獲得「體育」的子類別的頭條新聞(標題)頭條新聞,什麼是實現這一目標的最佳方式
我正在考慮做多個查詢(在這種情況下是3)。
首先,獲得「體育」的所有孩子的
SELECT * FROM categories WHERE parent_id = 1
然後,對於每個結果做一個查詢來獲取每個子類別的頭條新聞。
SELECT * FROM news WHERE category_id = (result from query above)
在此示例中,將執行3個查詢。 (一個獲得所有子類別,在這種情況下有兩個子類別,因此兩個查詢將被執行到新聞表格中,總共有3個)。
或者是否有更智能(更高效)的方式來執行這個?也許1個查詢?
您可以輕鬆地加入這兩個表。 CATEGORIES和NEWS之間的關係如何?它是1:1還是1:n?沒有新聞的類別是否有效? –
請注意,按照慣例,我們對孤兒使用NULL而不是0。 – Strawberry