คำถามติดแท็ก join

JOIN เป็นการดำเนินการทั่วไปในพีชคณิตเชิงสัมพันธ์สำหรับการดำเนินการรวมกันในความสัมพันธ์สองหรือมากกว่าในระบบฐานข้อมูลเชิงสัมพันธ์ เข้าร่วมยังเป็นคำหลักของภาษา SQL สำหรับการดำเนินการนี้

8
JPA eager fetch ไม่เข้าร่วม
การควบคุมกลยุทธ์การดึงข้อมูลของ JPA คืออะไร? ฉันไม่สามารถตรวจพบความแตกต่างระหว่างความกระตือรือร้นและขี้เกียจ ในทั้งสองกรณี JPA / Hibernate จะไม่เข้าร่วมความสัมพันธ์แบบกลุ่มต่อหนึ่งโดยอัตโนมัติ ตัวอย่าง: บุคคลมีที่อยู่เดียว ที่อยู่อาจเป็นของคนจำนวนมาก คลาสเอนทิตีที่มีคำอธิบายประกอบ JPA มีลักษณะดังนี้: @Entity public class Person { @Id public Integer id; public String name; @ManyToOne(fetch=FetchType.LAZY or EAGER) public Address address; } @Entity public class Address { @Id public Integer id; public String name; } ถ้าฉันใช้แบบสอบถาม JPA: select …
113 java  hibernate  jpa  join 

8
SQL เข้าร่วมกับแบบสอบถามย่อยของ SQL (ประสิทธิภาพ)?
ฉันต้องการทราบว่าฉันมีแบบสอบถามเข้าร่วมบางอย่างเช่นนี้ - Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id และแบบสอบถามย่อยเช่นนี้ - Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept) เมื่อฉันพิจารณาประสิทธิภาพของคำค้นหาใดที่จะเร็วกว่าและเพราะเหตุใด มีเวลาที่ควรชอบมากกว่ากันไหม? ขออภัยหากนี่เป็นเรื่องเล็กน้อยเกินไปและถามมาก่อน แต่ฉันสับสนเกี่ยวกับเรื่องนี้ นอกจากนี้จะเป็นการดีมากหากพวกคุณสามารถแนะนำเครื่องมือที่ฉันควรใช้เพื่อวัดประสิทธิภาพของคำค้นหาสองรายการ ขอบคุณมาก!

5
อะไรคือวิธีที่ดีที่สุดในการเข้าร่วมโต๊ะเดียวกันสองครั้ง
ซับซ้อนนิดหน่อย แต่ฉันมี 2 ตาราง สมมติว่าโครงสร้างเป็นดังนี้: *Table1* ID PhoneNumber1 PhoneNumber2 *Table2* PhoneNumber SomeOtherField สามารถรวมตารางได้ตาม Table1.PhoneNumber1 -> Table2PhoneNumber หรือ Table1.PhoneNumber2 -> Table2.PhoneNumber ตอนนี้ฉันต้องการรับชุดผลลัพธ์ที่มี PhoneNumber1, SomeOtherField ที่สอดคล้องกับ PhoneNumber1, PhoneNumber2 และ SomeOtherField ที่สอดคล้องกับ PhoneNumber2 ฉันคิด 2 วิธีในการทำสิ่งนี้ - ไม่ว่าจะโดยการเข้าร่วมบนโต๊ะสองครั้งหรือโดยการเข้าร่วมครั้งเดียวด้วย OR ในส่วนคำสั่ง ON วิธีที่ 1 : SELECT t1.PhoneNumber1, t1.PhoneNumber2, t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2 FROM Table1 t1 INNER …
108 sql  join 

16
เหตุใดจึงไม่นำมาตรฐาน SQL ANSI-92 มาใช้มากกว่า ANSI-89
ในทุก บริษัท ที่ฉันเคยทำงานฉันพบว่าผู้คนยังคงเขียนคำค้นหา SQL ในมาตรฐาน ANSI-89: select a.id, b.id, b.address_1 from person a, address b where a.id = b.id มากกว่ามาตรฐาน ANSI-92: select a.id, b.id, b.address_1 from person a inner join address b on a.id = b.id สำหรับแบบสอบถามที่ง่ายมากเช่นนี้ความสามารถในการอ่านไม่แตกต่างกันมากนัก แต่สำหรับการสืบค้นขนาดใหญ่ฉันพบว่าการมีเกณฑ์การเข้าร่วมของฉันถูกจัดกลุ่มโดยแสดงรายการในตารางทำให้ง่ายขึ้นมากที่จะดูว่าฉันอาจมีปัญหาในการเข้าร่วมและ ขอฉันเก็บการกรองทั้งหมดไว้ใน WHERE clause ไม่ต้องพูดถึงว่าฉันรู้สึกว่าการรวมภายนอกนั้นใช้งานง่ายกว่าไวยากรณ์ (+) ใน Oracle ขณะที่ฉันพยายามเผยแพร่ ANSI-92 ให้กับผู้คนมีประโยชน์ด้านประสิทธิภาพที่เป็นรูปธรรมในการใช้ ANSI-92 ผ่าน …
107 sql  join  ansi-sql  ansi-92 

9
การใช้งาน Cross Join คืออะไร?
การรวมแบบไขว้จะทำผลิตภัณฑ์คาร์ทีเซียนบนสิ่งที่สองของทั้งสองเซ็ต SELECT * FROM Table1 CROSS JOIN Table2 สถานการณ์ใดที่ทำให้การดำเนินการ SQL ดังกล่าวมีประโยชน์อย่างยิ่ง?



8
MySQL เข้าร่วมแถวล่าสุดเท่านั้นหรือไม่
ฉันมีลูกค้าโต๊ะที่เก็บ customer_id อีเมลและข้อมูลอ้างอิง มีตาราง customer_data เพิ่มเติมที่จัดเก็บบันทึกประวัติของการเปลี่ยนแปลงที่เกิดขึ้นกับลูกค้ากล่าวคือเมื่อมีการเปลี่ยนแปลงเกิดขึ้นจะมีการแทรกแถวใหม่ ในการแสดงข้อมูลลูกค้าในตารางจำเป็นต้องเชื่อมตารางทั้งสองเข้าด้วยกันอย่างไรก็ตามควรรวมแถวล่าสุดจาก customer_data เข้ากับตารางลูกค้าเท่านั้น มีความซับซ้อนขึ้นเล็กน้อยเมื่อแบบสอบถามมีการแบ่งหน้าดังนั้นจึงมีขีด จำกัด และออฟเซ็ต ฉันจะทำสิ่งนี้กับ MySQL ได้อย่างไร? ฉันคิดว่าฉันอยากจะใส่ DISTINCT ไว้ตรงนั้นสักแห่ง ... แบบสอบถามในนาทีเป็นเช่นนี้ - SELECT *, CONCAT(title,' ',forename,' ',surname) AS name FROM customer c INNER JOIN customer_data d on c.customer_id=d.customer_id WHERE name LIKE '%Smith%' LIMIT 10, 20 นอกจากนี้ฉันคิดถูกไหมที่คิดว่าจะใช้ CONCAT กับ LIKE ในลักษณะนี้ได้ (ฉันขอขอบคุณที่ …
106 mysql  sql  join 

3
Rails ซ้อนรูปแบบ has_many: ถึงวิธีแก้ไขแอตทริบิวต์ของ join model?
คุณจะแก้ไขแอตทริบิวต์ของโมเดลการเข้าร่วมได้อย่างไรเมื่อใช้ accept_nested_attributes_for ฉันมี 3 โมเดล: หัวข้อและบทความที่ Linkers เข้าร่วม class Topic < ActiveRecord::Base has_many :linkers has_many :articles, :through => :linkers, :foreign_key => :article_id accepts_nested_attributes_for :articles end class Article < ActiveRecord::Base has_many :linkers has_many :topics, :through => :linkers, :foreign_key => :topic_id end class Linker < ActiveRecord::Base #this is the join model, has …

2
เราสามารถใช้ join สำหรับสองตารางฐานข้อมูลที่แตกต่างกันได้หรือไม่?
เราสามารถใช้การรวมสำหรับสองตารางจากฐานข้อมูลที่แตกต่างกันได้หรือไม่? ถ้าใช่ฉันจะทำอย่างไร? ฐานข้อมูลทั้งสองอยู่บนเซิร์ฟเวอร์เดียวกันและ DBMS เหมือนกัน
103 sql  join 

3
MySQL วิธีเข้าร่วมตารางในสองฟิลด์
ฉันมีสองตารางที่มีdateและidฟิลด์ ฉันต้องการเข้าร่วมทั้งสองสาขา ฉันเหนื่อย JOIN t2 ON CONCAT(t1.id, t1.date)=CONCAT(t2.id, t2.date) ใช้งานได้ แต่ช้ามาก มีวิธีที่ดีกว่านี้ไหม
102 mysql  join 

3
SQLite - คุณเข้าร่วมตารางจากฐานข้อมูลต่างๆได้อย่างไร?
ฉันมีแอปพลิเคชันที่ใช้ฐานข้อมูล SQLite และทุกอย่างทำงานได้ตามที่ควร ตอนนี้ฉันอยู่ในขั้นตอนการเพิ่มฟังก์ชันใหม่ที่ต้องใช้ฐานข้อมูล SQLite ตัวที่สอง แต่ฉันมีปัญหาในการหาวิธีเข้าร่วมตารางจากฐานข้อมูลต่างๆ หากมีใครสามารถช่วยฉันได้ฉันจะขอบคุณจริงๆ! แก้ไข:ดูคำถามนี้สำหรับกรณีตัวอย่างที่คุณสามารถปรับให้เข้ากับภาษาของคุณได้เมื่อคุณแนบฐานข้อมูลตามที่กล่าวไว้ในคำตอบที่ยอมรับ
101 sql  database  sqlite  join 

3
ทำไม LINQ JOIN จึงเร็วกว่าการเชื่อมโยงกับ WHERE มาก?
ฉันเพิ่งอัปเกรดเป็น VS 2010 และกำลังเล่นกับ LINQ เป็น Dataset ฉันมีชุดข้อมูลที่พิมพ์แน่นหนาสำหรับการอนุญาตที่อยู่ใน HttpCache ของ ASP.NET WebApplication ฉันจึงอยากรู้ว่าอะไรคือวิธีที่เร็วที่สุดในการตรวจสอบว่าผู้ใช้ได้รับอนุญาตให้ทำบางสิ่งหรือไม่ นี่คือรูปแบบข้อมูลของฉันและข้อมูลอื่น ๆ หากมีใครสนใจ ฉันตรวจสอบแล้ว 3 วิธี: ฐานข้อมูลโดยตรง แบบสอบถาม LINQ กับที่ไหนเงื่อนไขที่ "เข้าร่วม" - ไวยากรณ์ แบบสอบถาม LINQ พร้อมเข้าร่วม - ไวยากรณ์ นี่คือผลลัพธ์ที่มีการโทร 1,000 ครั้งในแต่ละฟังก์ชัน: 1. การนึ่ง: 4,2841519 วินาที 115,7796925 วินาที 2,024749 วินาที 2. การนึ่ง: 3,1954857 วินาที 84,97047 วินาที 1,5783397 วินาที …

8
1052: คอลัมน์ 'id' ในรายการฟิลด์ไม่ชัดเจน
ฉันมี 2 โต๊ะ tbl_namesและtbl_sectionซึ่งมีทั้งidสนามอยู่ในนั้น ฉันจะเลือกidฟิลด์ได้อย่างไรเพราะฉันมักจะได้รับข้อผิดพลาดนี้: 1052: Column 'id' in field list is ambiguous นี่คือคำถามของฉัน: SELECT id, name, section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id ฉันสามารถเลือกฟิลด์ทั้งหมดและหลีกเลี่ยงข้อผิดพลาดได้ แต่นั่นจะเป็นการเสียประสิทธิภาพ ฉันควรทำอย่างไรดี?

5
sqlalchemy: วิธีการเข้าร่วมหลายตารางโดยหนึ่งแบบสอบถาม?
ฉันมีคลาสที่แมป SQLAlchemy ต่อไปนี้: class User(Base): __tablename__ = 'users' email = Column(String, primary_key=True) name = Column(String) class Document(Base): __tablename__ = "documents" name = Column(String, primary_key=True) author = Column(String, ForeignKey("users.email")) class DocumentsPermissions(Base): __tablename__ = "documents_permissions" readAllowed = Column(Boolean) writeAllowed = Column(Boolean) document = Column(String, ForeignKey("documents.name")) ฉันต้องการโต๊ะแบบนี้สำหรับuser.email = "user@email.com": email | name | …
98 python  sql  join  sqlalchemy 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.