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
'programing' 카테고리의 다른 글
GROUP BY가 없는 집계 쿼리 (0) | 2023.09.07 |
---|---|
Spring의 @Value 주석에 여러 속성 이름을 지정할 수 있습니까? (0) | 2023.09.07 |
JSF 동적에는 Ajax 요청 사용이 포함됩니다. (0) | 2023.09.07 |
Safari ajax request Failed to load resource: The network connection was lost (0) | 2023.09.07 |
빌드 중에 호스트 볼륨을 도커 파일의 도커 컨테이너에 마운트하는 방법 (0) | 2023.09.07 |