2014-12-07 2 views
1

AS 얻기 위해 UNION을 사용하여 WHERE, 1 AS의 ColumnName,의 ColumnName AS 2 자리에 대한이MySQL의 모든 열은 1

IdRows | UpperLevelIdRows | CategoriesName | 
------------------------------------------------- 
    2 | 0    | Transport 
    4 | 2    | Cars 
    12 | 4    | Alfa Romeo 

쿼리

SELECT IdRows AS IdRows1, CategoriesName AS CategoriesName1 FROM categories 
WHERE UpperLevelIdRows = ? 

UNION 

SELECT IdRows AS IdRows2, CategoriesName AS CategoriesName2 FROM categories 
WHERE UpperLevelIdRows = ? 

데이터와 같은 테이블

Array 
(
[0] => 2 
[1] => 4 
) 
입니다 되세요

so

SELECT IdRows AS IdRows1 .... WHERE UpperLevelIdRows = 2 

및 결과

SELECT IdRows AS IdRows2 .... WHERE UpperLevelIdRows = 4 

[0] => Array 
    (
     [IdRows1] => 4 
     [CategoriesName1] => Cars 
    ) 

    [1] => Array 
    (
     [IdRows2] => 12 
     [CategoriesName2] => Alfa Romeo 
    ) 

같은 배열을 얻을하지만 난이 exe 인 경우 IdRows1

볼이

[0] => Array 
    (
     [IdRows1] => 4 
     [CategoriesName1] => Cars 
    ) 

    [1] => Array 
    (
     [IdRows1] => 12 
     [CategoriesName1] => Alfa Romeo 
    ) 

대신 IdRows2의 같은 배열을 얻을 것으로 예상 귀엽게 만 두 번째 SELECT IdRows AS IdRows2 ..., 다음을 참조하십시오. [CategoriesName2] => Alfa Romeo

내 실수는 어디에서 볼 수 있습니까? 무엇을 바로 잡아야합니까?

데이터에서 선택/옵션 상자를 만들고 싶습니다. 마찬가지로

첫 번째 선택 상자

echo '<select name="upper_level_id0" id="upper_level_id0" > 
<option value="'.$IdRows1.'">'.$CategoriesName1.'</option> 
</select>'; 

두 번째 선택 상자 트랜잭션을 사용하는 순간 발견 솔루션에서

echo '<select name="upper_level_id1" id="upper_level_id1" > 
<option value="'.$IdRows2.'">'.$CategoriesName2.'</option> 
</select>'; 

. 모든 SELECT ...

$db->beginTransaction(); 
foreach ($sql_get_id_name as $k_sql => $val_sql) { 
$stmt_get_id_name = $db->prepare($val_sql); 
$stmt_get_id_name->execute(array($data_get_id_name[$k_sql])); 
$id_name[] = $stmt_get_id_name->fetchAll(PDO::FETCH_ASSOC); 
} 
$roll_back = $db->rollBack(); 
+0

정확히 무엇을 원하니? 이것은 나무 구조입니까? 귀하의 질문을 이해하지 못했습니다. – Augusto

+0

수정 된 텍스트입니다. 내가 원하는 것과 내가 얻은 것을 썼습니다. – user2118559

+0

공용체를 사용할 때 첫 번째 선택에서 이름을 사용하여 가져옵니다. 어떤 데이터를 추출하고 어떻게 사용할 계획입니까? 데이터베이스에서 나무 같은 구조를 추출하는 더 좋은 방법이 있습니다 – Augusto

답변

1

사용하면 부모의 모든 자손을 얻을 것이다이 선택

select cp.IdRows p_id, cp.UpperLevelIdRows p_parent_id, cp.CategoriesName p_name, 
     cc.IdRows p_id, cc.UpperLevelIdRows c_parent_id, cc.CategoriesName c_name 
from categories cc left join categories cp on cp.IdRows = cc.UpperLevelIdRows 
where cc.UpperLevelIdRows = 4 

이 방법을 통해 루프. 결과의 첫 번째 3 열은 부모 (행 데이터에서 Cars)이고 두 번째 열 (행 데이터에서 알파 로메오)