簡體   English   中英

sqldatasource中的多個INNER JOIN用於在gridview中顯示

[英]Multiple INNER JOIN in sqldatasource for displaying in a gridview

標題中幾乎所有內容都在其中,我試圖在其中創建一個SQLdatasource來顯示gridview中多個表中的數據。

我在模型中有三個表:

具有ID(主鍵),引用,date_fabrication,ref_fab,masse_reelle,projet_Id的表lot_poudre(表projet的ID的外鍵)

具有ID(主鍵),mass,lot_poudre_Id(lot_poudre表的ID的外鍵)的表lot_element

帶有ID,標稱值的表項目

這是我嘗試過的用於顯示兩個表(lot_poudre和lot_element)中數據的方法:

<asp:SqlDataSource
        ID="SqlDataSourcelotspoudre"
        runat="server"
        ConnectionString="Data Source=GRE032477\SQLEXPRESS;Initial Catalog=db_pour_test;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"
        ProviderName="System.Data.SqlClient"
        SelectCommand=
        "SELECT lot_poudre.Id,  lot_poudre.reference, lot_poudre.date_fabrication, lot_poudre.ref_fab,  lot_poudre.masse_reelle/Sum(lot_element.masse)*100 AS rendement, lot_poudre.masse_reelle AS masse_initiale
        FROM  

            lot_poudre INNER JOIN lot_element 
                ON lot_poudre.Id = lot_element.lot_poudre_Id 


        GROUP BY lot_poudre.Id,lot_poudre.reference, lot_poudre.date_fabrication, lot_poudre.ref_fab,lot_poudre.masse_reelle;"></asp:SqlDataSource>

問題是當我嘗試顯示來自第三張表的數據時(使用表projet):

 <asp:SqlDataSource
        ID="SqlDataSourcelotspoudre"
        runat="server"
        ConnectionString="Data Source=GRE032477\SQLEXPRESS;Initial Catalog=db_pour_test;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"
        ProviderName="System.Data.SqlClient"
        SelectCommand=
        "SELECT lot_poudre.Id,  lot_poudre.reference, lot_poudre.date_fabrication, lot_poudre.ref_fab, projet.nom, lot_poudre.masse_reelle/Sum(lot_element.masse)*100 AS rendement, lot_poudre.masse_reelle AS masse_initiale
        FROM projet 
         INNER JOIN 
            lot_poudre INNER JOIN lot_element 
                ON lot_poudre.Id = lot_element.lot_poudre_Id 
         ON projet.Id = lot_poudre.projet_Id

        GROUP BY lot_poudre.Id,lot_poudre.reference, lot_poudre.date_fabrication, lot_poudre.ref_fab,lot_poudre.masse_reelle, projet.nom;"></asp:SqlDataSource>

我得到的錯誤表明對象“ projet”的名稱無效。

我嘗試了一切並需要一些幫助,最終的gridview我正在嘗試從5個表構建顯示值!

謝謝

京東方投資”

您的內部聯接不正確。 試試這個sql:

SELECT lot_poudre.Id,  
        lot_poudre.reference, 
        lot_poudre.date_fabrication, 
        lot_poudre.ref_fab, projet.nom, 
        lot_poudre.masse_reelle/Sum(lot_element.masse)*100 AS rendement, 
        lot_poudre.masse_reelle AS masse_initiale
        FROM projet 
         INNER JOIN lot_poudre ON projet.Id = lot_pourde.Id
         INNER JOIN lot_element  ON lot_poudre.Id = lot_element.lot_poudre_Id 
        GROUP BY lot_poudre.Id,lot_poudre.reference, lot_poudre.date_fabrication, lot_poudre.ref_fab,lot_poudre.masse_reelle, projet.nom

在具有第一個ON條件之前,您有兩個INNER JOIN。 在下一個INNER JOIN語句之前,每個連接實例都必須在該連接的ON條件之后。

感謝您的回答,

我終於找到了問題所在。 在entityframework中,有時必須在某些實體上加上“ s”。 在這種情況下,它可以正常工作(將“ s”添加到“項目”中)。

在第一個ON之前有兩個INNER JOIN,因為我要聯接三個表。 在Microsoft Access中,“內部” INNER JOIN有一個括號,這使我更清楚。

"SELECT lot_poudre.Id,  lot_poudre.reference, lot_poudre.date_fabrication, lot_poudre.ref_fab, projets.nom, lot_poudre.masse_reelle/Sum(lot_element.masse)*100 AS rendement, lot_poudre.masse_reelle AS masse_initiale
        FROM lot_element
         INNER JOIN 
             lot_poudre INNER JOIN projets
                ON lot_poudre.projet_Id = projets.Id 
         ON lot_element.lot_poudre_Id = lot_poudre.Id

        GROUP BY lot_poudre.Id,lot_poudre.reference, lot_poudre.date_fabrication, lot_poudre.ref_fab,lot_poudre.masse_reelle, projets.nom"

這也很好(RickJames回答中添加了“ s”)。

SELECT lot_poudre.Id,  
        lot_poudre.reference, 
        lot_poudre.date_fabrication, 
        lot_poudre.ref_fab,
        projets.nom, 
        lot_poudre.masse_reelle/Sum(lot_element.masse)*100 AS rendement, 
        lot_poudre.masse_reelle AS masse_initiale
        FROM projets 
         INNER JOIN lot_poudre ON projets.Id = lot_poudre.projet_Id
         INNER JOIN lot_element ON lot_poudre.Id = lot_element.lot_poudre_Id 
        GROUP BY lot_poudre.Id,lot_poudre.reference, lot_poudre.date_fabrication, lot_poudre.ref_fab,lot_poudre.masse_reelle, projets.nom"

感謝大家

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM