English 中文(简体)
2. 我的树木类型
原标题:mysql category tree search

我对我的SQL.1有以下图谋:

CREATE TABLE  `mytest` (
  `category` varchar(32) ,
  `item_name` varchar(255)
  KEY `key1` (`category`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

第3类

[:parent_parent_cat_id][:parent_cat_id][:leaf_cat_id]

10000200003000

如果你能够搜寻所有以下类别: 父母—— 类别_id

SELECT * FROM mytest WHERE category LIKE "10000%";

它使用指数关键1;

but How to use index when I wanna search :parent_cat_id?

SELECT * FROM mytest WHERE category LIKE "%20000%";

你们是否有更好的解决办法?

最佳回答

This model is called materialized path.

仅需在单独的表格中打上<条码>。 反之,不提:

SELECT  i.*
FROM    categories c
JOIN    items i
ON      i.category = c.id
WHERE   c.path BETWEEN
        (
        SELECT  path
        FROM    categories ci
        WHERE   ci.id =  20000 
        )
        AND
        CONCAT(
        (
        SELECT  path
        FROM    categories ci
        WHERE   ci.id =  20000 
        ),  : )
问题回答

第二点不能使用指数。

You didn t make it clear in your question whether you are able to make changes to the schema, but you should try to change it if at all possible. To store heirarchical data in MySQL I suggest you first look at the presentation Models for hierarchical data by Bill Karwin.

您也不妨阅读以下系列:MySQL中的等级问题,





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签