Получение двух строк из 1 таблицы одним запросом

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Надо получить категорию и вышестоящую категорию по parent_id

Получить 1 категорию:
Код:
SELECT * FROM `cats` WHERE `id`=$id

И этим же запросом надо получить:
Код:
SELECT * WHERE `id`=`запрос №1`.`parent_id`

Если бы вторая строка была бы в другой таблице, сделал бы JOIN, а так хз
 
Самообъединение таблиц допустимо, например
Код:
SELECT level2.*, level1.name AS `parent_name`
FROM `cats` AS `level2`
LEFT JOIN `cats` AS `level1` ON level1.id = level2.parent_id
WHERE level2.id = $id
 
Самообъединение таблиц допустимо, например
Код:
SELECT level2.*, level1.name AS `parent_name`
FROM `cats` AS `level2`
LEFT JOIN `cats` AS `level1` ON level1.id = level2.parent_id
WHERE level2.id = $id
Получили 1 строку, только parent категорию.
Код:
PHP:
$cat = $db->prepare('
        SELECT `cat`.*, `parent`.*
        FROM `help_cats` as `cat`
        LEFT JOIN `help_cats` as `parent` ON `cat`.`parent_id`=`parent`.`id`
        WHERE `cat`.`id`=:id
    ');
 
    $cat->bindParam(':id', $els[0]);
    $cat->execute();
 
    while( $c = $cat->fetch(PDO::FETCH_ASSOC))
    {
        var_dump($c);
    }
 
    var_dump($cat->getSQL());
Это получили:
Код:
array(4) {
["id"]=>
string(1) "5"
["name"]=>
string(27) "Категория"
["url"]=>
string(0) ""
["parent_id"]=>
string(1) "2"
}
string(160) "
SELECT `cat`.*, `parent`.*
FROM `help_cats` as `cat`
LEFT JOIN `help_cats` as `parent` ON `cat`.`parent_id`=`parent`.`id`
WHERE `cat`.`id`='12'
"
 
Да... Тяжелый случай. Надо прописать
level1.name AS `parent_name` и прочее чтобы родительскую достать. в примере выбирается только имя родительской.
Если нет родителя - тоже работает, только вместо parent_name будет null
 
Ребят, помогите, что за ошибка и с чем она может быть связана? Может быть из-за того, что таблицы не хватает? ERROR: Column 'amount' in field list is ambiguous
 
Ребят, помогите, что за ошибка и с чем она может быть связана? Может быть из-за того, что таблицы не хватает? ERROR: Column 'amount' in field list is ambiguous
В таблице, из которой получаете данные, нет столбика amount
 
Это значит что amount встречается более чем в одной таблице, и мускул растерялся, какую именно использовать. Следует уточнить по названию таблицы (или алиасу, если используется он), например items.amount для таблицы items
 
Назад
Сверху