programing

MySQL - 사용자의 선택에 따라 열 '이름'을 선택합니다. 열 'id'와 'parent'의 행이 동일한 경우

css3 2023. 9. 7. 21:58

MySQL - 사용자의 선택에 따라 열 '이름'을 선택합니다. 열 'id'와 'parent'의 행이 동일한 경우

부모 = 0이 범주를 의미할 때

부모 = 1이 범주 1에 연결된 하위 범주 1을 의미할 때 (id=1)

부모 = 2가 범주 2에 연결된 하위 범주 2를 의미할 때 (id=2)

부모님이...19개 범주까지(id=19, 부모 포함=0)

카테고리 필드에서 사용자의 선택에 따라 하위 카테고리 양식 필드의 하위 카테고리 이름을 가져오면 됩니다.카테고리 필드는 정상적으로 작동합니다.

id      parent      name                            active
1       0           Arts & Entertainment            0
2       0           Automotive                      0
3       0           Business & Professional Serv.   1
4       0           Clothing & Accessories          0
5       0           Community & Government          0
6       0           Computers & Electronics         1
7       0           Construction & Contractors      0
8       0           Education                       0
9       0           Food & Dining                   0
10      0           Health & Medicine               0
11      0           Home & Garden                   0
12      0           Industry & Agriculture          0
13      0           Legal & Financial               1
14      0           Media & Communications          0
15      0           Personal Care & Services        0
16      0           Real Estate                     0
17      0           Shopping                        0
18      0           Sports & Recreation             0
19      0           Travel & Transportation         0
34      1           Acting Schools                  1
35      1           Aerial Photographers            1
36      1           Arcades & Amusements            1
37      1           Art Classes                     1
38      1           Art Galleries & Dealers         1
39      1           Art Schools                     1

1. 사용자의 선택권($judgePick)을 주는 카테고리에 대한 쿼리 필드입니다.

$db->setQuery('SELECT name FROM #__professional_categ WHERE parent=0 AND active=1 ORDER BY name ASC');

2. 해결하려는 하위 범주 필드에 대한 쿼리입니다.

$judgePick = JRequest::getVar('category');
$db = JFactory::getDBO();

$db->setQuery('SELECT `name` FROM `#__professional_categ` WHERE active = 1 AND (something here...) ORDER BY parent ASC, name ASC);

$result = $db->loadColumn();
 if(!$result){
echo "error";
} else {
    echo json_encode($result);
}

가정 1 - ='.'$db->quote($judgePick)를 포함하는 ID

가정 2 - 부모 > 0의 경우 가정 1의 사용자 선택 ID와 같아야 합니다.

예상결과

하위 카테고리 필드는 사용자의 선택 ID가 상위인 카테고리 필드($judgePick)에서 사용자의 선택에 따라 이름만 가질 수 있습니다.즉, 예를 들어 Arts & Entertainment는 카테고리(parent=0)이며 (id=1)을 가지며, 카테고리 양식 필드에서 사용자가 선택하면 하위 카테고리 양식 필드에 (parent=1)을 가진 모든 이름이 표시되어야 합니다.

본인이 원하는 것은 아마도 본인 가입일 것입니다.

SELECT x.name 
FROM #__professional_categ x
JOIN #__professional_categ y
  ON x.parent = y.id
WHERE y.name = ‘. $judgePick .‘
  AND x.parent = y.id
  AND x.active = 1

http://www.sqlfiddle.com/ #!9/ecc4bb/1/0 의 추상 샘플에 대한 쿼리를 확인할 수 있습니다.

코드의 입력을 사용하면 선택한 카테고리의 이름만 얻을 수 있기 때문에 테이블에서 id도 선택해야 하므로 하위 카테고리의 상위 id를 찾아 선택하고 이를 바탕으로 하위 카테고리의 이름을 반환할 수 있습니다.

줌라 구문에서 코드와 쿼리는 다음과 같이 표시됩니다.

$jinput = JFactory::getApplication()->input;
$judgePick = $jinput->get(‘category’);

$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

$query
  ->select('x.name')
  ->from($db->quoteName('#__professional_categ', 'x'))
  ->join('LEFT', $db->quoteName('#__professional_categ', 'y') . ' ON ' . $db->quoteName('x.parent') .' = '. $db->quoteName('y.id'))
  ->where($db->quoteName('y.name') .' = '. $db->quote($judgePick))
  ->andWhere(array($db->quoteName('x.parent').' = '. $db->quoteName('y.id'), $db->quoteName('x.active').' = 1'), $glue = 'AND')
  ->order($db->quoteName('x.name') . ' ASC');

// Reset the query using our newly populated query object.
$db->setQuery($query);

$result = $db->loadColumn();

이것은?

$db->setQuery("SELECT name FROM #__professional_categ WHERE parent=$judgePick AND active=1 ORDER BY name ASC");

언급URL : https://stackoverflow.com/questions/55878834/mysql-select-column-name-according-to-users-choice-where-rows-in-column-id