当不同表中的两列具有相同名称时,如何使用SqlDataReader读取数据?

时间:2018-03-24 23:46:34

标签: c# sql sql-server

我在两个不同的表中有两个名为“Name”的列。一个在Store表中,另一个在Product表中。如何区分读取哪一个?

使用左连接从4个不同的表中获取数据,如下面的查询所示。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="mail.php" method="POST">
  <p>Name<input class="search" type="text" name="name" placeholder="Name">
    <p>Email</p> <input class="search" type="text" name="email" placeholder="Email">
    <p>Message for the author</p><textarea class="search" name="message" rows="6" cols="25" placeholder="Message"></textarea><br />
    <input type="submit" value="Send">
</form>

表名是Store,Product,StockRequest,StoreInventory。

现在,两个“名称”列的数据都来自Store表。我无法从Product表中获取“Name”数据。

1 个答案:

答案 0 :(得分:1)

您可以使用别名为重复列指定不同的名称。

SqlCommand query = new SqlCommand("SELECT Store.StoreID, 
"Store.Name as StoreName," + 
"Product.Name as ProductName," +
" StockRequest.Quantity, StoreInventory.StockLevel from Store" +
" LEFT JOIN StoreInventory ON StoreInventory.StoreID = Store.StoreID" 
+ " LEFT JOIN Product ON StoreInventory.ProductID = 
Product.ProductID" + " LEFT JOIN StockRequest ON StockRequest.StoreID 
= Store.StoreID", conn);

然后在阅读时使用正确的名称,例如:

read["StoreID"],
read["StoreName"], read["ProductName"],
read["Quantity"], read["StockLevel"]