Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > Inner join 2 database วรผู้รู้ช่วยหน่อยครับ ผมมีปัญกากับการ Inner join ครับตอนนี้ผมเขียน ASP.NET(C#)



 

Inner join 2 database วรผู้รู้ช่วยหน่อยครับ ผมมีปัญกากับการ Inner join ครับตอนนี้ผมเขียน ASP.NET(C#)

 



Topic : 037730



โพสกระทู้ ( 113 )
บทความ ( 0 )



สถานะออฟไลน์




วรผู้รู้ช่วยหน่อยครับ ผมมีปัญกากับการ Inner join ครับตอนนี้ผมเขียน ASP.NET(C#) ใช้ฐานข้อมูล sql server
คือว่าผมมีอยู่ 2 database ซึ่งภายได้database จะมีตารางบางตารางที่มีความสัมพันธ์กันอยู่สมมุติว่าใน datadase1 มีตาราง table1 ซึ่งในตาราง table1 มีฟิวล์ id1 ที่สัมพันธ์กันกับ database2 ในตาราง table2 ชื่อฟิวล์ id2 ซึ่งผมนำมา Inner Join กันจะได้

database1 conn =new database1 //เรียกใช้งาน database
database2 conn2 =new database2 //เรียกใช้งาน database

string sql="SELECT database1.table1.id, database2.table2.name2 FROM database1 Inner join databse2.table2 ON database1.table1.id1=database2.table2.id2";
sqldataadapter adap=new sqldataadapter(??????)

แล้วในวงเว็บผมจะเรียกใช้ conn ตัวไหนครับ
ถ้าจะเขียน connect ให้เรียกใช้ได้ทั้งสอง database จะต้องเขียนยังไงครับ หรือมีวิธีไหนที่ทำได้อีกครับช่วยแนะนำด้วย ขอบคุณครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-01-26 10:18:12 By : loogway View : 2950 Reply : 1
 

 

No. 1



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


query ทั้งสองอันมาใส่ไว้ใน datatable คนละอันก่อน

แล้วจับ datatable ทั้งสองนั้นมา join กันทีหลัง โดยใช้ class นี้

JoinDataTable.cs
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Collections;

/// <summary>
/// Summary description for SqlDatabase
/// </summary>
public class JoinDataTable
{
    public JoinDataTable()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    /// <summary>
    /// Join DataTable with DataTable.
    /// </summary>
    public static DataTable Join(DataTable LeftTable, DataTable RightTable, string LeftPrimaryColumn, string RightPrimaryColumn)
    {
        //first create the datatable columns 
        DataSet mydataSet = new DataSet();
        mydataSet.Tables.Add("  ");
        DataTable myDataTable = mydataSet.Tables[0];

        //add left table columns 
        DataColumn[] dcLeftTableColumns = new DataColumn[LeftTable.Columns.Count];
        LeftTable.Columns.CopyTo(dcLeftTableColumns, 0);

        foreach (DataColumn LeftTableColumn in dcLeftTableColumns)
        {
            if (!myDataTable.Columns.Contains(LeftTableColumn.ToString()))
                myDataTable.Columns.Add(LeftTableColumn.ToString());
        }

        //now add right table columns 
        DataColumn[] dcRightTableColumns = new DataColumn[RightTable.Columns.Count];
        RightTable.Columns.CopyTo(dcRightTableColumns, 0);

        foreach (DataColumn RightTableColumn in dcRightTableColumns)
        {
            if (!myDataTable.Columns.Contains(RightTableColumn.ToString()))
            {
                if (RightTableColumn.ToString() != RightPrimaryColumn)
                    myDataTable.Columns.Add(RightTableColumn.ToString());
            }
        }

        //add left-table data to mytable 
        foreach (DataRow LeftTableDataRows in LeftTable.Rows)
        {
            myDataTable.ImportRow(LeftTableDataRows);
        }

        ArrayList var = new ArrayList(); //this variable holds the id's which have joined 

        ArrayList LeftTableIDs = new ArrayList();
        LeftTableIDs = DataSetToArrayList(0, LeftTable);

        //import righttable which having not equal Id's with lefttable 
        foreach (DataRow rightTableDataRows in RightTable.Rows)
        {
            if (LeftTableIDs.Contains(rightTableDataRows[0]))
            {
                string wherecondition = "[" + myDataTable.Columns[0].ColumnName + "]='"
                        + rightTableDataRows[0].ToString() + "'";
                DataRow[] dr = myDataTable.Select(wherecondition);
                int iIndex = myDataTable.Rows.IndexOf(dr[0]);

                foreach (DataColumn dc in RightTable.Columns)
                {
                    if (dc.Ordinal != 0)
                        myDataTable.Rows[iIndex][dc.ColumnName.ToString().Trim()] =
                rightTableDataRows[dc.ColumnName.ToString().Trim()].ToString();
                }
            }
            else
            {
                int count = myDataTable.Rows.Count;
                DataRow row = myDataTable.NewRow();
                row[0] = rightTableDataRows[0].ToString();
                myDataTable.Rows.Add(row);
                foreach (DataColumn dc in RightTable.Columns)
                {
                    if (dc.Ordinal != 0)
                        myDataTable.Rows[count][dc.ColumnName.ToString().Trim()] =
                rightTableDataRows[dc.ColumnName.ToString().Trim()].ToString();
                }
            }
        }

        return myDataTable;
    }

    private static ArrayList DataSetToArrayList(int ColumnIndex, DataTable dataTable)
    {
        ArrayList output = new ArrayList();

        foreach (DataRow row in dataTable.Rows)
            output.Add(row[ColumnIndex]);

        return output;
    }
}


อาจเสีย performance ในการวนลูปหน่อยนะ






Date : 2010-01-26 10:31:08 By : tungman
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Inner join 2 database วรผู้รู้ช่วยหน่อยครับ ผมมีปัญกากับการ Inner join ครับตอนนี้ผมเขียน ASP.NET(C#)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่