Bu, üç doğal birleştirmenin doğru yolu mu? :3-Tabla Doğal Katılma Nasıl Yapılır?
SELECT C.name, P.name
FROM client C NATURAL JOIN order O NATURAL JOIN product P
WHERE O.date > '15.02.2011'
Bu, üç doğal birleştirmenin doğru yolu mu? :3-Tabla Doğal Katılma Nasıl Yapılır?
SELECT C.name, P.name
FROM client C NATURAL JOIN order O NATURAL JOIN product P
WHERE O.date > '15.02.2011'
Bu gerçekten doğal katılır için tipik sözdizimi. Ancak, tüm veritabanları doğal birleşimleri desteklemiyor (örneğin, SQLServer'ın desteklediğine inanmıyorum) ve doğal birleştirme için bir ANSI standardı olduğuna inanmıyorum.
doğal genellikle kaçınılması gereken tehlikeli ve bir şey olarak kabul edilir katılır Not olduğunu - onlar bir sorgu bağlı olduğunu katılmak ilişkiyi gizleyebilir ve bu kodun anlamı değişir veri modeli değişmiş ise sorguları neden olabilir çünkü bu. Bu sözdizimini kullanan
NATURAL JOIN'ler ne yazık ki ANSI'dir, ancak kaçınılmaları gerektiğine katılıyorum. –
+1: Anlaşılmış, (imho) mantık açık ve örtük olmamalıdır. Bu nedenle, INNER JOIN kullanın. – MatBailie
'NAUTRAL JOIN', geçerli bir SQL-92 sözdizimi. Gerçekten ilişkisel bir DBMS 'NATURAL JOIN'de ihtiyacınız olan tek birleşimdir. Herhangi bir araç yanlış ellerde tehlikelidir. – onedaywhen
, daha önce bahsedildiği gibi tehlikeli kabul edilir. T1 (id, isim, yaş) T2 (id, yaş, şehir)
SELECT T1.id, T1.name, T1.age, T2.age
FROM T1 NATURAL JOIN T2
sütun katılmak için kullanılmalıdır: Aşağıdaki örneği inceleyin? Kimlik mi, yaş mı? Tanımlanmamıştır. Her satıcı bu tür sorunları çözmek için kendi yolunu uygulayabilir.
yerine bu sözdizimi, geleneksel katılmak sözdizimi kullanarak göz önünde bulundurun: seçtiğiniz SQL ürünü bu özelliği desteklemiyorsa zaman
SELECT T1.....
FROM T1 INNER JOIN T2 on T1.id=T2.id
Soruyu sen mi çözdün? Bir satıcı tarafından "NATURAL JOIN" in uygun şekilde uygulanması, daha iyi şema tasarımını desteklemelidir. Seninki saman adam argümanı. "INNER JOIN" sözdizimi SQL-92'dir ("NATURAL JOIN" olduğu gibi). "Geleneksel" eşdeğer birleştirme sözdizimini "FROM T1, T2 WHERE T1.id = T2.id" olarak düşünürdüm. – onedaywhen
NATURAL JOIN SQL-92'de standart olsa da, önde gelen DBMS'lerin bazı satıcıları desteklemiyor. "Geleneksel" sözdizimini kullanmak benimki kadar yaygın değildir. Ne demek istediğimi tarif etmek için "geleneksel" yerine "ortak" yazmalıyım. –
Mimer SQL-92 validator kullanın sözdizimini kontrol etmek. order
ve date
'un ayrılan kelimeler olduğunu öğrenmelisiniz. Bunları sırasıyla my_order
ve my_date
olarak değiştirin ve sonra sizinki geçerli bir Transitional SQL-92 sözdizimi olduğunu keşfedeceksiniz.
Ne tür bir veritabanı kullanıyorsunuz? (SQL Server, MySQL, vb.) – dana
eski mysql sunucusu –
@dana, SQL Server'da "doğal birleştirme" yoktur. – Pacerier