繁体   English   中英

如何选择三个列名相同但值不同的表

[英]How to select three table with same column name but different values

嗨,我很困惑要选择 3 个表数据值。

例如:在表 1 中:

Id    value   price  <br> 
1     101     30   <br> 
2     102     40  <br>
3     103     50  <br>

在表 2

value       price   <br>
101       25  <br>
102       35   <br>
103       45  <br>

在表 3

value       Price   <br>
101          5%  <br>
102         6%   <br>
103         7%  <br>

在这种情况下,我如何获得带有 id 的所有价格值

我需要这样的结果

ID    Price   Price   Price <br>
1  --   30  --   25 --     5%<br>
2  --    40  --   35   --   6%<br>
3  --    50  --   45   --   7%<br>

尝试使用内连接

select id,table1.value, table1.price as price1,table2.price as price2,table3.price as price3 from table1 
inner join table2 on table1.value=table2.value
inner join table3 on table2.value=table3.value
SELECT table1.id , table1.price , table2.price ,table3.price 
FROM table1 
JOIN table2 ON table.id = table2.id 
JOIN table3 ON table.value = table3.value

结果

select table1.id,table1.value, table1.price,table2.price,table3.price

从 table1 内连接 table2 上 table1.value=table2.value 内连接 table3 上 table2.value=table3.value

您需要做的是使用称为键和键的一致值对表执行JOIN 在这种情况下,将您的表链接在一起的一致值是名为value的列。 所以这就是你需要在你的JOIN

SELECT
    table1.id as TABLE1_ID,
    table1.price as TABLE1_PRICE,
    table2.price as TABLE2_PRICE,
    table3.price as TABLE3_PRICE
FROM
  table1
LEFT JOIN
    table2 ON table1.`value` = table2.`value`
LEFT JOIN
    table3 ON table2.`value` = table3.`value`

输出:

在此处输入图片说明

工作 SQL 小提琴

更多关于JOIN的信息在这里

既然您在评论部分提到了 PHP,请尝试以下操作:

$sql="SELECT
        table1.id as TABLE1_ID,
        table1.price as TABLE1_PRICE,
        table2.price as TABLE2_PRICE,
        table3.price as TABLE3_PRICE
    FROM
      table1
    LEFT JOIN
        table2 ON table1.`value` = table2.`value`
    LEFT JOIN
        table3 ON table2.`value` = table3.`value`"
$result_set=mysqli_query($conn, $sql);
$row=mysqli_fetch_array($conn, $result_set);

$rowcount=mysqli_num_rows($result_set);
$count=0;

while($rowcount > $count) {
    $count++;

    echo 'id: '.$row['id'].'<br />';
    echo 'price: '.$row['price'].'<br />';

    $row=mysqli_fetch_array($conn, $result_set);
}

请记住include您的数据库连接文件,以便可以访问$conn

如果它最初不起作用,请尝试用定义的别名替换实际的列名,如下所示:

$row['id']$row['TABLE1_ID']等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM