ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

Last post 20 Sep 2009 21:54 by nantcom. 8 replies.
Page 1 of 2 (9 items) 1 2 Next >
Sort Posts: Previous Next
  • 18 Sep 2009 1:56

    ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

    คือว่าผมต้องการ Select ค่าจาก Table 2 โดยเก็บเป็น รหัส 2 รหัส จาก Table 1 โดย Table 1 เก็บ รหัส และ คำ ไว้ ต้องการ Select คำมาแสดงโดยเทียบจากรหัสจาก Table 1 ดังตัวอย่างภาพน่ะครับ
    Table 1

    Table 2

    อยากได้ค่าที่ Select มาเป็นแบบนี้น่ะครับ

    ปล. เรื่องนี้เป็นเรื่องท้ายสุดที่จะถามพี่ แล้วน่ะครับ ขอบคุณที่ช่วยมาโดยตลอดขอบคุณครับ
  • 18 Sep 2009 14:07 In reply to

    Re: ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

    column synonyms เอามาจาก table อะไรไม่เห็นมี
  • 18 Sep 2009 14:46 In reply to

    Re: ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

    จริงๆ อ่านคำถามก็งงๆ เหมือนกันครับ

    แต่เท่าที่ดู คือ อยากได้ Vocab ตั้งต้นไว้ แล้วเอา Synonyms ทั้งหมด ของ Vocab ออกมา ถ้าเป็นแบบนี้ น่าจะเป็น LEFT JOIN ครับ คือตั้งตารางซ้าย Vocab เป็นหลัก แล้วเอาตารางขวามาแปะ

     แต่จริงๆ แล้วมาคิดดูอีกที JOIN ธรรมดาก็น่าจะออกแล้วนะครับ ลอง

    SELECT * FROM Vocab v INNER JOIN Synonyms s ON v.Vocab_Id = s.Vocab_ID

    ดู ถ้ามันผิดก็เป็น LEFT JOIN แทน

    Filed under:
  • 18 Sep 2009 15:44 In reply to

    Re: ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

    ถ้าเป็นอย่างที่พี่บอก มันจะดึงมาแค่ colum v.Vocab_ID = s.vocab_Id แต่ส่งที่ผมต้องการคือให้ v.vocab_Id = s.Vocab_SynID ด้วยอ่ะครับ ให้มันแสดงอย่างตัวอย่างภาพอันสุดท้ายอ่ะครับ แสดงทั้ง Vocab_ID และ Vocab_SynID Thanks: จดโดเมน .ac.th ประกันเงินผ่อน sms ฟรี
  • 20 Sep 2009 11:19 In reply to

    Re: ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

    ถามใหม่ดีกว่าครับ คือ Synonyms นี่มันคือ ตารางความสัมพันธ์ระหว่างคำศัพท์ใช่ป่ะครับ คือ บอกว่าคำอะไร Synomym กันบ้าง (เพิ่งจะเก็ท)

    ถ้างั้น แบบนี้ก็ Join ซ้อน Join ครับ

    Join แรก เอา Vocab มาก่อน

    SELECT *
    FROM  Syn s1 JOIN Vocab v1 ON (s1.VocabID = v1.Vocab_ID )

    จะได้ตาราง Synomym ที่มีคำติดต้นมาด้วยแล้ว แต่ยังขาดคำเหมือน

     

     จากนั้น เอา Table นี้ ไป Join ต่อ อีกที เพื่อเอาคำเหมือนมา

     SELECT *
    FROM  Syn s1 JOIN Vocab v1 ON (s1.VocabID = v1.Vocab_ID )
    JOIN Vocab v2 ON s1.VocabSynID = v2.Vocab_ID

    ก็จะได้ตารางคำเหมือน ที่มีคำต้น และคำเหมือนติดมาด้วย ก็น่าจะถูกแล้วใช่ไหมครับ

    จากนั้น ถ้าจะให้มันสวยหน่อยก็ใส่ชื่อเข้าไป

     SELECT v1.Vocab_ID, v1.Vocab, v2.Vocab_ID As SynomymId, v2.Vocab As Synonym
    FROM  Syn s1 INNER JOIN Vocab v1 ON (s1.VocabID = v1.Vocab_ID )
    INNER JOIN Vocab v2 ON s1.VocabSynID = v2.Vocab_ID

     

    แต่พี่กลัวอย่างเดียวคือเรื่อง Performance ครับ น่าจะช้าพอสมควร แต่ต้องลองดู

  • 20 Sep 2009 15:22 In reply to

    Re: ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

    ขอบคุณมากเลยครับ ตอนแรกคิดว่าจะไม่มาตอบให้เลย เปลี่ยน ตารางจาก ที่เก็บเป็น Integer มาเป็น nvarchar แต่พี่มาตอบให้ผมแล้วคงต้องกลับไปใช้ที่เป็น integer เพราะว่ามันมีน้ำหนักในการให้คะแนนมากกว่า ก็ขอขอบคุณพี่มากเลยน่ะครับ ไงก็ขอโทษด้วยน่ะครับที่อธิบายแบบ งง ๆ
  • 20 Sep 2009 15:25 In reply to

    Re: ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

    ตัว synonyms มันมีไม่เท่ากับ คำศัพท์ คงมากสุดก็สัก 10000 คำ พอรับได้ครับ
  • 20 Sep 2009 19:01 In reply to

    Re: ส่งสัยเรื่องการ sub query อ่ะครับต้องทำอย่างไรถ้าเป็นตารางแบบนี้หมดปัญญาครับ

    อันนี้ผมใช้ sql server ใน vb2008 ทำจะได้ออกมาเป็นเป็นนี้น่ะครับ Thanks: หางาน ผ่อนประกันรถยนต์ แปลภาษา
Page 1 of 2 (9 items) 1 2 Next >