2016-12-16 8 views
-1

드롭 다운 목록에서 값을 선택한 후 선택한 값에 해당하는 테이블을 표시해야합니다. SQLPro Studio에서이 쿼리를 실행하고 $mr_id 변수가 없으면 MR_ID은 모호합니다. 이 문제를 해결할 수있는 방법이 있습니까? 이것은 나에게 작은 문제인 것처럼 보이지만 나는 그것을 이해하는 것처럼 보일 수 없다. 난 단지 WHERE 어딘가에 있는지 확인해야합니다 그래서 그것은 단지 값을 선택한 값과 상관 표시됩니다.WHERE 절에 모호한 열 고정

테이블은 MR_ID (드롭 다운 목록에 표시되며 테이블에없는 다른 열과 연결되어있는 열)과 Supp_ID입니다.

<?php 
$host="xxxxxxxxxxxx"; 
$dbName="xxxxx"; 
$dbUser="xxxxxxxx"; 
$dbPass="xxxxxxxxxxxxxx"; 

$mr_id = $_POST['mr_id']; 

$dbh = new PDO("sqlsrv:server=".$host."; Database=".$dbName, $dbUser, $dbPass); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql_one = " 
SELECT CONCAT(CAST(Stage_Rebate_Index.MR_ID AS INT),' - ', Stage_Rebate_Master.MR_Name) AS MR_ID, 
     Stage_Rebate_Index.MR_ID AS sort_column, 
     CAST(Supp_ID as INT) AS Supp_ID 
FROM Stage_Rebate_Index 
    LEFT JOIN Stage_Rebate_Master 
    ON Stage_Rebate_Master.MR_ID = Stage_Rebate_Index.MR_ID 
WHERE Stage_Rebate_Index.MR_ID = '$mr_id' 
ORDER BY sort_column"; 


//$users = $dbh->query($sql); 
$users_one = $dbh->query($sql_one); 
?> 

<html> 
    <body> 

     <!-- Table --> 
<p> 
    <div id="table_div"> 
     <table border="1" id="index_table" class="ui-widget ui-widget-content"> 
      <thead> 
       <tr class="ui-widget-header"> 
       <td>MR ID</td> 
       <td>Supplier ID</td> 
       </tr> 
      </thead> 
      <?php foreach($users_one->fetchAll() as $supp) { ?> 
      <tr> 
       <td class="mr_id"><?php echo $supp['MR_ID'];?></td> 
       <td class="supp_id"><?php echo $supp['Supp_ID'];?></td> 
      </tr> 
      <?php } ?> 
     </table> 
    </div> 

    </body> 
    </html> 

편집 : 절

WHERE 
    MR_ID = '$mr_id' 

테이블을 지정 곳에 harcoded 값 업데이트 쿼리 ...에서

$sql_one = " 
SELECT 
     CONCAT(CAST(t1.MR_ID AS INT),' - ', COALESCE(t2.MR_Name, '')) AS MR_ID, 
     t1.MR_ID AS sort_column, 
     CAST(Supp_ID as INT) AS Supp_ID 
FROM Stage_Rebate_Index t1 
     LEFT JOIN Stage_Rebate_Master t2 
     ON t2.MR_ID = t1.MR_ID 
WHERE 
    CONCAT(CAST(t1.MR_ID AS INT),' - ', t2.MR_Name) = LTRIM(RTRIM('1 - Company A')) 
ORDER BY sort_column"; 
+4

업데이트 질문 귀하의 질문과 관련없는 ** ** ** ** ** 삭제 ** 만약 당신이 SQL에 대한 질문 - 귀하의 질문에서 모든 HTML/CSS/자바 스크립트를 제거하십시오. – Dekel

+0

테이블 이름에 별칭을 사용하기 시작하면 편리합니다. – GuidoG

답변

3

당신의 당신과 같은에서 원하는 :

WHERE 
    Stage_Rebate_Master.MR_ID = '$mr_id' 

당신은 d는 아마도 select 절에 테이블을 지정하기도한다.

+0

모호한 열을 없애 버렸지 만이 연결 값은 Stage_Rebate_Index 또는 Master 테이블에 없습니다. 단지 조인입니다. between 2 – Rataiczak24

+0

select 문에서 별칭을 열 이름과 일치하지 않는 위치로 변경 한 다음 where 문에 사용하십시오. where 절에서 전체 연결 수식을 사용하거나 사용합니다. – nurdyguy

2

Zackary Murphy의 솔루션에 대한 귀하의 의견을 통해 MR_ID처럼 실제로는 테이블의 열 값이 아닌 선택 항목의 계산 된 값이라고 할 수 있습니다. 이 시도.

SELECT 
     CONCAT(CAST(t1.MR_ID AS INT),' - ', COALESCE(t2.MR_Name, '')) AS MR_ID, 
     t1.MR_ID AS sort_column, 
     CAST(Supp_ID as INT) AS Supp_ID 
FROM Stage_Rebate_Index t1 
     LEFT JOIN Stage_Rebate_Master t2 
     ON t2.MR_ID = t1.MR_ID 
WHERE 
    CONCAT(CAST(t1.MR_ID AS INT),' - ', t2.MR_Name) = LTRIM(RTRIM('$mr_id')) 
ORDER BY sort_column 

* 편집을 통해 테이블 ​​별칭을 추가하십시오.

* 편집 공백을 추가했습니다.

* t2.MR_Name이 null 인 경우 수정 사항이 COALESCE에 추가되었습니다.

+0

이 작동하지만 어떤 이유로,'$ mr_id'의 값을 선택하지 않습니다 .... 나는'echo $ mr_id'를 수행하여 값이 제대로 가져 왔는지 확인했습니다. – Rataiczak24

+0

'$ sql_one' 자체에 echo를 수행합니다. 어떻게 생성되는지 궁금합니다. – nurdyguy

+0

좋아, 문제가 발견되었습니다 .... 값의 형식은'1 - Company A'입니다. 그러나이 쿼리가 실행될 때'1 - Company A '로 나오므로 여분의 공간이 있습니다 1과 A 후에 ... 그 때 어떻게 보일까요? – Rataiczak24

0

테이블 열의 정규화 된 이름을 지정해야합니다. 당신이 2 표, 표 1 및 표 2, 두 테이블의 열 이름으로 COL1 한이처럼

아래이 두 테이블에서 데이터를 검색하는 경우 쿼리 예입니다

select 
    table1.co11 as tbl1col1, table2.col1 as tbl2col1 
from 
    table1 
join 
    table2 on table1.id = table2.id 
where 
    table1.col1 = "your statement" and table2.col1 = "your statement"