簡體   English   中英

使用PHP進行MySql查詢的最佳實踐

[英]Best practice in MySql query with PHP

我有三個表master_category,category_group文章如下
1) master_category

cat_id             cat_name
------------------------------
1                   Movies
2                   Hollywood
3                   Bollywood
4                   Hollywood Actress
5                   Hollywood Actors
6                   Mobiles
7                   Sony
8                   Apple
9                   LG
10                  Sony Accessories

1) category_group

   id             Main_Group         Sub_Group
--------------------------------------------------
   1                  1                  2
   2                  1                  3
   3                  2                  4
   4                  2                  5
   5                  6                  7
   6                  6                  8
   7                  6                  9
   8                  7                  10      
 --------------------------------------------------

2) 文章

  id                    title                    description
----------------------------------------------------------------
  1                   sample title                some description

表記錄是這樣的,當我單擊電影時,我需要獲取包含單詞“電影”,“好萊塢”,“好萊塢”,“好萊塢女星”,“好萊塢演員”等的文章,即(子組和子組等)

我已經做到了

SELECT names.* FROM master_category mc LEFT JOIN category_group sc #level1
ON sc.main_group = mc.cat_id LEFT JOIN category_group sc2 #level2
ON sc2.main_group = sc.sub_group LEFT JOIN master_category names
ON sc.sub_group = names.cat_id OR sc2.sub_group = names.cat_id
where mc.cat_name = 'movies' order by names.cat_id;

從這個查詢中我可以得到cat_name

$ result是我們從該查詢結果中獲得的數組

$i=0;
foreach($result as $row)
{
  if($i!=0) { $query_condition.= "or "; } 
  $query_condition.= " title like '%".$row['cat_name']."%' or description like '%".$row['cat_name']."%'";
}

得到這樣的結果

  $query_condition = " title like '%Movies%' or description like '%Movies%' or title like '%Bollywood%' or description like '%Bollywood%' or title like '%Hollywood%' or description like '%Hollywood%' or title like '%Hollywood Actress%' or description like '%Hollywood Actress%' or title like '%Hollywood Actor%' or description like '%Hollywood Actor%'

然后我寫了最終查詢如下

     select * from articles where $query_condition

這是最佳做法嗎? 如果我們有更多的類別時間來獲得最終結果,將會增加。 還有其他最好的方法來獲得快速結果嗎? 請告訴我

這可能會幫助您查詢數據庫,但是您需要提高其性能

SELECT DISTINCT    
           a.title,
           a.description
FROM       articles a
           INNER JOIN
           (
              SELECT (@clicked_cat_id := cat_id) cat_id,
                     cat_name
              FROM   master_category
              WHERE  Upper(cat_name) = Upper(@clicked_cat_name := "Movies")
              UNION
              SELECT     b.cat_id,
                         b.cat_name
              FROM       master_category b
                         INNER JOIN category_group c
                           ON b.cat_id = c.sub_group
              WHERE      c.main_group = @clicked_cat_id ) c
WHERE      a.title LIKE concat('%',c.cat_name,'%')

暫無
暫無

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

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