maisurin โพสต์ 2020-11-11 16:17:31

ขอแนวทางการ JOIN Table 5 ตารางหน่อยครับ


ขอแนวทางการจอยตารางตามผังข้างบนหน่อยครับ
ผมต้องการคิวรี่ข้อมูลเฉพาะ BorelogPK = 1 ในตารางอีก 4 พอผมเขียนคิวรี่ออกมาไม่ได้ดึงเฉพาะ BorelogPK = 1
ในตารางพวก BorelogMainBar มันกลับดึงข้อมูลทั้งหมดมาแสดงแบบลูกจนครบทุกตารางทำให้คิวรี่ออกมาได้ข้อมูลไม่ถูกต้องครับ

thanaphum โพสต์ 2020-11-11 18:28:07

SELECT ตารางที่ต้องการแสดง.ฟิลด์ที่ต้องการแสดง,ตารางที่ต้องการแสดง.ฟิลด์ที่ต้องการแสดง,ตารางที่ต้องการแสดง.ฟิลด์ที่ต้องการแสดง,
FROM borelog bl
LEFT JOINBorelogmainBar bmb ON bmb.borelogPK=bl.borelogPK
LEFT JOINBorelogLinks bll ON bll.borelogPK=bl.borelogPK
LEFT JOINBorelogStiffiners bln ON bln.borelogPK=bl.borelogPK
LEFT JOINBorelogSoilay bls ON bls.borelogPK=bl.borelogPK
LEFT JOINBorelogTruck blt ON blt.borelogPK=bl.borelogPK
WHERE เงื่อนไขที่Table.ฟิลด์="เงื่อนไข??"

maisurin โพสต์ 2020-11-12 09:58:04

thanaphum ตอบกลับเมื่อ 2020-11-11 18:28
SELECT ตารางที่ต้องการแสดง.ฟิลด์ที่ต้องการแสดง,ตารางที ...

ผมลองทำแล้วครับข้อมูลที่ได้จะไม่ตรงครับมันลูบจนทั้งสี่ตารางที่จอยเข้ามา

ppcchan265 โพสต์ 2020-11-12 11:56:09

ลองเปลี่ยนจาก LEFT JOIN เป็น INNER JOIN ดูครับ

maisurin โพสต์ 2020-11-12 12:26:40

ppcchan265 ตอบกลับเมื่อ 2020-11-12 11:56
ลองเปลี่ยนจาก LEFT JOIN เป็น INNER JOIN ดูครับ

ลองแล้วครับมาเหมือนเดิม

maisurin โพสต์ 2020-11-12 12:29:20

FROM
                    (
                            (
                                    (
                                            ( ( Borelog LEFT JOIN BorelogMainBar ON Borelog.BorelogPK = BorelogMainBar.BorelogPK ) LEFT JOIN BorelogLinks ON Borelog.BorelogPK= BorelogLinks.BorelogPK )
                                            LEFT JOIN BorelogStiffiners ON Borelog.BorelogPK= BorelogStiffiners.BorelogPK
                                    )
                                    LEFT JOIN BorelogSoiLayer ON Borelog.BorelogPK= BorelogSoiLayer.BorelogPK
                            )
                            LEFT JOIN BorelogTruck ON Borelog.BorelogPK= BorelogTruck.BorelogPK
                    )
            WHERE Borelog.BorelogPK =" & PK
      Try
            If Conn.State = ConnectionState.Closed Then Conn.Open()
            Cmd.Connection = Conn
            Cmd.CommandText = strSQL
            DAP1 = New SqlDataAdapter(strSQL, Conn)
            Dim DR As SqlDataReader = Cmd.ExecuteReader
            Dim i As Long = 0
            If DR.HasRows Then
                While DR.Read
                  With dgvMainbars
                        .Rows.Add(i)
                        .Rows(i).Cells(0).Value = DR.Item("MainBarQty").ToString
                        .Rows(i).Cells(1).Value = DR.Item("MainBarType").ToString
                        .Rows(i).Cells(2).Value = DR.Item("MainBarDiameters").ToString
                        .Rows(i).Cells(3).Value = DR.Item("MainBarLenght").ToString
                  End With
                  i += 1
                End While
มันมีปัญหาเฉพาะในส่วนของ เดด้ากริดอย่างเดียวครับ

thongkorn โพสต์ 2020-11-12 13:37:48

ผมดูตารางข้อมูลไม่ออกครับ ลอง Export ฐานข้อมูลส่งมาเป็น Access ได้หรือเปล่าครับ ... ก็คงพอจะแนะนำแบบทั่วๆไป คือกรณีที่มีข้อมูลซ้ำกัน ลองใช้คำสั่ง DISTINCT ในฟิลด์ที่ซ้ำกันดูครับ

thanaphum โพสต์ 2020-11-13 09:44:54

maisurin ตอบกลับเมื่อ 2020-11-12 12:29
มันมีปัญหาเฉพาะในส่วนของ เดด้ากริดอย่างเดียวครับ

เอา คำสั่ง SQL ไป query บน ฺDBMS ได้ค่าออกมาอย่างที่ต้องการไหมครับ

maisurin โพสต์ 2020-11-13 10:21:40

thanaphum ตอบกลับเมื่อ 2020-11-13 09:44
เอา คำสั่ง SQL ไป query บน ฺDBMS ได้ค่าออกมาอย่างที่ต้องการไหมครับ

กรณีที่จอยแค่สองตารางจะได้ข้อมูลมาตรงครับ แต่จอยเริ่มตั้งแต่สามขึ้นไปมันจะวนลูบกันทจนครบจากคิวรี่ทำให้วนค่าเดิมๆเข้าไปเดด้ากริด

ppcchan265 โพสต์ 2020-11-13 14:30:27

ต้องดูโครงสร้างกับข้อมูลอีกทีครับถึงจะบอกได้ ครับ
หน้า: [1]
ดูในรูปแบบกติ: ขอแนวทางการ JOIN Table 5 ตารางหน่อยครับ