Мне нужно отобразить таблицу, соответствующую значению, выбранному после выбора значения в выпадающем списке. Если я запустил этот запрос в своей SQLPro Studio и, очевидно, без переменной $mr_id
, он говорит, что MR_ID
неоднозначен. Есть ли способ исправить это? Мне кажется, что это небольшая проблема, но я не могу понять. Мне просто нужно убедиться, что есть пункт WHERE
где-то, чтобы он отображал только значения, которые коррелируют с выбранным значением.Фиксация неоднозначной колонки в WHERE Пункт
В таблице указаны только 2 столбца, 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>
EDIT: Обновленный запрос с 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";
Обновление вопрос и удалить ** все **, что ** не ** связано с вашим вопросом. Если вы спросите о SQL - удалите все html/css/javascript из вашего вопроса. – Dekel
, вы должны начать использовать псевдоним для имен таблиц, что сделало бы это намного проще. – GuidoG