簡體   English   中英

PHP選擇類別和數量

[英]PHP select categories and count number

表格類別:

id, name,    
-------------
1   category1
2   category2
3   category3
4   category4

表帖子:

id, category, title
--------------------
1   1, 3      title1
2   4, 2      title2
3   1, 4      title3

我想要一個表演類別和這個類別的反崗位。 在表格的類別列中,我輸入了類別ID,這些ID以“,”分隔。 當category = category ID並使用最少的SQL查詢顯示計數器時,將搜索該方法。

您應該將數據結構固定為每個帖子和類別都有一行。 出於多種原因,逗號分隔列表不是存儲數據的SQLish方法。 您應該將其更改為聯結表。

原因如下:

  • 數字應存儲為數字而不是字符串。
  • 外鍵關系應正確定義,並且不能使用數字字符串。
  • 一個屬性應包含一個值。
  • MySQL對字符串處理功能沒有很好的支持。
  • 無法使用索引優化使用該列的查詢。

您應該有一個名為PostCategories的表以獲取此信息。

有時,我們陷入別人的錯誤設計決定中。 如果是這樣,則可以使用以下查詢:

select c.id, count(*)
from posts p join
     categories c
     on find_in_set(c.id, replace(p.category)) > 0
group by c.id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM