Выбор из разных столбцов

Я пытаюсь выбрать из разных столбцов в таблице, а затем MYSQL поиск значения поля. Я искал в Google, но больше всего мне удавалось использовать запросы IN и LIKE, которые мало помогли с тем, чего я пытаюсь достичь.

<?php
//get rows query
$query = $db->query("SELECT * FROM categories WHERE cat_parent = 'Root'");
while($row = $query->fetch_assoc()){
$cat_name = $row["cat_name"];
?>
<li><a href="$id"><?php echo $cat_name; ?></a>
</li>
<?php } ?>

<?php
//get rows query
$query = $db->query("SELECT * FROM categories WHERE cat_parent = cat_name");
while($row = $query->fetch_assoc()){
$cat_name = $row["cat_name"];
?>
<li class="dropdown"><a href="$cat_id" class="dropdown-toggle" data-toggle="dropdown"><?php echo $cat_name; ?></a>
<div class="dropdown-menu">
<div class="dropdown-inner">
<ul class="list-unstyled">
<li><a href="$cat_id">$cat_name</a></li>
</ul>
</li>
</div>
</div>
</li>
<?php } ?>

этот код будет выбираться из той же строки, а это не то, что мне нужно, мне нужно выбрать его из всей таблицы, где cat_name = cat_parent, поэтому, например, если cat parent — это Electronics, а cat_name — laptops, тогда ноутбуки должны отображаться в электроника.

Я надеюсь, что мой вопрос ясен.

ОБНОВЛЕНИЕ: мне удалось правильно отобразить и отфильтровать все категории, за исключением того, что они повторяют друг друга. Вот новый код:

<?php
$query = $db->query("SELECT * FROM categories WHERE cat_parent = 'Root' AND cat_parent NOT IN (SELECT cat_name FROM categories)");
while($row = $query->fetch_assoc()){
$parent_cat_name = $row["cat_name"];

?>
<li>
<a href="$id">
<?php echo $parent_cat_name; ?>
</a>
</li>
<?php
$query1 = $db->query("SELECT * FROM categories WHERE cat_parent = '".$parent_cat_name."'");
while($row = $query1->fetch_assoc()){
$cat_name = $row["cat_name"];
?>
<li class="dropdown">
<a href="$cat_id" class="dropdown-toggle" data-toggle="dropdown">
<?php echo $parent_cat_name; ?>
</a>
<div class="dropdown-menu">
<div class="dropdown-inner">
<ul class="list-unstyled">
<li><a href="$cat_id"><?php echo $cat_name?></a></li>
</ul>
</div>
</div>
</li>
<?php
}
}
?>

Я пытаюсь найти MYSQL-запрос, чтобы отфильтровать все категории, которые имеют значение «Root» и не находятся внутри столбца cat_name.

0

Решение

На основании информации в вашем вопросе это должно делать то, что вы спрашиваете.

<?php
$query = $db->query("SELECT * FROM categories WHERE cat_parent = 'Root'");
while($row = $query->fetch_assoc()){
$parent_cat_name = $row["cat_name"];

?>
<li>
<a href="$id">
<?php echo $parent_cat_name; ?>
</a>
</li>
<?php
$query = $db->query("SELECT * FROM categories WHERE cat_parent = '".$parent_cat_name."'");
while($row = $query->fetch_assoc()){
$cat_name = $row["cat_name"];
?>
<li class="dropdown">
<a href="$cat_id" class="dropdown-toggle" data-toggle="dropdown">
<?php echo $cat_name; ?>
</a>
<div class="dropdown-menu">
<div class="dropdown-inner">
<ul class="list-unstyled">
<li><a href="$cat_id">$cat_name</a></li>
</ul>
</div>
</div>
</li>
<?php
}
}
?>

Приведенный выше код помещает подкатегорию while () внутри родительского цикла, чтобы он извлекал все подкатегории, где cat_parent соответствует родительскому элементу, в котором он находится.

2

Другие решения

Догадаться. Пришлось создать еще одну таблицу MYSQL под названием category_sub и сделать обходной путь в моих запросах. Таким образом, окончательный результат должен быть

<?php
$query = $db->query("SELECT * FROM categories WHERE cat_name NOT IN (SELECT sub_cat_parent FROM categories_sub) AND cat_parent = 'Root'");
while($row = $query->fetch_assoc()){
$parent_cat_name = $row["cat_name"];

?>
<li>
<a href="$id">
<?php echo $parent_cat_name; ?>
</a>
</li>
<?php }

$query1 = $db->query("SELECT * FROM categories_sub ");
while($row = $query1->fetch_assoc()){
$cat_name = $row["sub_cat_name"];
$cat_parent = $row["sub_cat_parent"];
?>
<li class="dropdown">
<a href="$cat_id" class="dropdown-toggle" data-toggle="dropdown">
<?php echo $cat_parent; ?>
</a>
<div class="dropdown-menu">
<div class="dropdown-inner">
<ul class="list-unstyled">
<li><a href="$cat_id"><?php echo $cat_name?></a></li>
</ul>
</div>
</div>
</li>
<?php

}
?>

Я знаю, что это не лучший подход, и должен быть очень простой подход (но это было лучшее, что я могу сделать).

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector