我想從數據庫表中打印一個項目列表,並與每個項目一起列出相關子項目的一個小列表(最多10個項目)。在列表中獲取相關數據
例如,我有這2個表:
ITEMS
id: integer
name: string
SUBITEMS
id: integer
name: string
item_id: integer
所以,一個項目可以有很多子項目。
我想打印是這樣的:
Item 1
this item has: subitem 1, subitem 2, subitem 3
Item 2
this item has: subitem 4, subitem 5, subitem 6
Item 3
this item has: subitem 2, subitem 4, subitem 7
我怎麼能得到這個在考慮性能?正如我所說,每個項目可以有許多子項目,但我會顯示最多10個。
如果我用加入做出選擇,我認爲它可能會過多的數據庫時,有一個分頁例如,每頁25個項目,以及100個用戶查詢。所以,我認爲這不是一個好的解決方案。
我曾想過一個解決方法,髒東西:向ITEMS表中添加一個名爲subitems_summary(文本類型)的新字段,並且每次將一個子項分配給一個項目時,我將使select成爲兩個表,並在那裏存儲結果,所以我可以稍後格式化來自該字段的數據。例如,在上面的清單中,Item 3的subitems_summary字段是:「subitem 2; subitem 4; subitem 7」。
您認爲如何?
考慮一下你的「骯髒的解決辦法」不僅不爲的選擇,性能又插入,更新和刪除各個子項。 –
我會使用'select *'並迭代結果集並打印非空值 – alfasin