объединить запрос в одной таблице с условием - PullRequest
0 голосов
/ 23 мая 2011

Я вставил категорию и подкатегорию в одну таблицу.

id, name, mainCat,

Вот название категории. Если пользователь добавляет подкатегорию, то яЯ добавлю родительскую категорию в maincat и подкатегорию к имени.

, но когда произойдет сортировка, у меня будет сортировка по категориям.

любой может предложить мне лучший запрос

Ответы [ 3 ]

0 голосов
/ 24 мая 2011

Я много пытался с запросом, но в конце концов я сделал это с php

$category = mysql_query("SELECT * FROM category WHERE mainCat = '' ORDER BY `name` ASC");

while($data = mysql_fetch_array($category)){
    $array[] = $data;
    $subCategory = mysql_query("SELECT * FROM category WHERE mainCat ='".$data['name']."' ORDER BY `name` ASC");
    echo "SELECT * FROM category WHERE mainCat ='".$data['name']."' ORDER BY `name` ASC".'<br/>';
    while($data2 = mysql_fetch_array($subCategory)){
        if($data2['mainCat']!=""){
            $array[] = $data2;
        }
    }   
}
0 голосов
/ 24 мая 2011

попробуйте ниже:

SELECT t1.id, t1.name
FROM tablename t1
LEFT JOIN tableName t2
ON t2.name = t1.mainCat
0 голосов
/ 23 мая 2011

До тех пор, пока у вас есть только два уровня категорий, будет достаточно запроса, подобного следующему, с использованием самостоятельного объединения.Однако, если у вас много уровней (то есть иерархии), тогда проблема становится намного сложнее.См. http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ для получения дополнительной информации.

SELECT p.Name, s.Name
FROM Categories s
LEFT JOIN Categories p ON s.mainCat = p.ID
ORDER BY p.Name, s.Name;
...