2016-04-10 15 views

cevap

0

Tek bir sorguda demek istediğime inanıyorum. Tek bir sorguda birden fazla tablo için veri ayıklamak için düşünebildiğim iki yolu onları "birleştiren" olmadan vardır:

Yumruk sendikayla olan

SELECT A, B, C FROM Table1 
UNION 
SELECT X, Y, Z FROM Table2 

Ayrıca "haç katıl" yapabilirsiniz bir katılmak gibi bakmak (ve düşünüyorsun muhtemelen budur) bir tablodan diğerine ilişki yoktur sözdizimi görebileceğiniz gibi

SELECT Table1.A, Table1.B, Table1.C, Table2.X, Table2,Y, Table2,Z 
FROM Table1, Table2 

etmeyen. Bu, 'un tablo1'deki her satırın, tablo2'deki her satırla birleştirileceği anlamına gelir!

Deneyimlerimde bu, programcılar için SQL'in yeni oluşturduğu en yaygın hatadır. Bir katılma anlamına geldiğinde çapraz birleştirme yaparlar ve daha sonra istedikleri sonuçları almak için GROUP BY veya DISTINCT kullanırlar. Bu derece verimsiz!

Çapraz birleştirmeler iyi olabilir, özellikle de tablonun yalnızca bir satırı varsa - bu değerleri diğer tabloda her satıra eklersiniz. Temel olarak her satır için sütunlar için tek bir değer kümesi seçersiniz.

her satır maksimum tarih (bu genellikle raporlarda yapılır)
SELECT * 
FROM Table1, (SELECT MAX(updatedate) as Max_Update FROM Table1) AS MaxDate 
+0

SİZE Hogan TEŞEKKÜRLER sahip olmak istiyorsanız gibi

!! – Justin

+0

@Justin - yw, düzenlemeleri kontrol ettiğinizden emin olun, çapraz katılma hakkında kullanım notları ekledim. – Hogan

0

değil, başka seçenekler Birliği gibi vardır:

SELECT customerNumber id, contactLastname name 
FROM customers 
UNION 
SELECT employeeNumber id,firstname name 
FROM employees 

Yukarıdaki örnek almaktır gelen this. diğer zamanlarda bir katılmak dışarı ile vb birden fazla kaynaktan veri almak için, birden fazla sorgu çalıştırabilirsiniz vardır . Her şey ne yapmak istediğinize bağlı. Ancak, birleşme çok yaygın - ve muhtemelen en olağan - bir yaklaşımdır.

İlgili konular