Nasıl yapılır: Bir şey yanında bir tablo (Visual veritabanı araçları) kullanarak sorgu oluşturma
Alma sorgu yazdığınız zaman, hangi sütunları istediğiniz, hangi satır istediğiniz HP'nin ve sorgu işlemci nerede özgün veriler.Genellikle, bu özgün veri bir tablo veya birbirine birkaç tablo oluşur.Ancak özgün veri tabloları dışındaki kaynaklardan gelebilir.De olgu, onu gelebilir görünümleri, sorguları, eşanlamlı veya diğer dönüş tablo kullanıcı tanımlı işlevler.
Tablo yerine görünüm kullanma
Görünümden satır seçebilirsiniz.Örneğin, veritabanının "Pahalı" adında bir görünüm içerir varsayalım. içinde her satırı fiyatı 19.99 aşan bir başlık tanımlar.Görünüm tanımı aşağıdaki gibi görünebilir:
SELECT *
FROM titles
WHERE price > 19.99
Pahalı psikoloji psikoloji yalnızca pahalı görünümünden seçerek seçebilirsiniz.Sonuçta ortaya çıkan sql şuna benzeyebilir:
SELECT *
FROM ExpensiveBooks
WHERE type = 'psychology'
Benzer şekilde, bir görünüm JOIN işleminde yer alabilir.Örneğin, yalnızca satış katılarak satış kitaplar bulabilirsiniz tablo pahalı görüntülemek için.Sonuçta ortaya çıkan sql şuna benzeyebilir:
SELECT *
FROM sales
INNER JOIN
ExpensiveBooks
ON sales.title_id
= ExpensiveBooks.title_id
Bir görünüm için bir sorgu ekleme hakkında daha fazla bilgi için bkz: Nasıl yapılır: Tablolar, sorgular (Visual veritabanı araçları) Ekle.
Bir tablonun yerine bir sorgu kullanarak
Bir sorgudan satır seçebilirsiniz.Örneğin, yazmış başlık ve ortaklaşa tanıtıcılarını alan bir sorgu varsayalım — kitaplar ile birden fazla yazar.sql şuna benzeyebilir:
SELECT
titles.title_id, title, type
FROM
titleauthor
INNER JOIN
titles
ON titleauthor.title_id
= titles.title_id
GROUP BY
titles.title_id, title, type
HAVING COUNT(*) > 1
Daha sonra bu sonuç üzerine kurulan başka bir sorgu yazabilirsiniz.Örneğin, ortaklaşa yazılmış psikoloji alan bir sorgu yazabilirsiniz.Bu yeni sorguyu yazmak için varolan sorguyu yeni sorgunun veri kaynak olarak kullanabilirsiniz.Sonuçta ortaya çıkan sql şuna benzeyebilir:
SELECT
title
FROM
(
SELECT
titles.title_id,
title,
type
FROM
titleauthor
INNER JOIN
titles
ON titleauthor.title_id
= titles.title_id
GROUP BY
titles.title_id,
title,
type
HAVING COUNT(*) > 1
)
co_authored_books
WHERE type = 'psychology'
Vurgulanmış metin varolan sorguyu yeni sorgunun veri kaynak olarak kullanılan gösterir.Varolan sorgu için yeni bir sorgu edin ("ort_yazarlı_kitaplar") diğer ad kullandığına dikkat edin.Diğer adları hakkında daha fazla bilgi için bkz: Nasıl yapılır: Tablo diğer adları (Visual veritabanı araçları) oluştur ve Nasıl yapılır: Sütun diğer adları (Visual veritabanı araçları) oluştur.
Benzer şekilde, bir sorgu JOIN işleminde yer alabilir.Örneğin, ortaklaşa yazılmış kitaplar satış pahalı görünümü yalnızca ortaklaşa sorgu ile birleştirerek bulabilirsiniz.Sonuçta ortaya çıkan sql şuna benzeyebilir:
SELECT
ExpensiveBooks.title
FROM
ExpensiveBooks
INNER JOIN
(
SELECT
titles.title_id,
title,
type
FROM
titleauthor
INNER JOIN
titles
ON titleauthor.title_id
= titles.title_id
GROUP BY
titles.title_id,
title,
type
HAVING COUNT(*) > 1
)
Bir sorgu için sorgu ekleme hakkında daha fazla bilgi için bkz: Nasıl yapılır: Tablolar, sorgular (Visual veritabanı araçları) Ekle.
Tablo yerine kullanıcı tanımlı bir işlev kullanma
sql Server 2000 veya sonraki sürümlerde, tablo döndüren kullanıcı tanımlı bir işlev oluşturabilirsiniz.Bu tür karmaşık veya yordamsal mantık işlemlerinde yararlı işlevlerdir.
Örneğin, çalışanın varsayalım tablo içeren ek bir sütun employee.manager_emp_id ve yabancı anahtar için employee.emp_id manager_emp_id bulunmaktadır.Her satırdaki çalışanın tablo, çalışanın patron manager_emp_id sütunu gösterir.Daha hassas bir şekilde çalışanın patronun emp_id gösterir.Belirli üst düzey yöneticinin kuruluş hiyerarşisi içinde her çalışan için bir satır içeren bir tablo döndüren kullanıcı tanımlı bir işlev oluşturabilirsiniz.işlev bul_TümEkip çağırın ve bir giriş değişkeni olması için tasarım — geri almak istediğiniz takım Yöneticisi'nin emp_id.
Bul_TümEkip kullanan bir sorgu yazabilirsiniz işlev veri kaynak olarak.Sonuçta ortaya çıkan sql şuna benzeyebilir:
SELECT *
FROM
fn_GetWholeTeam ('VPA30890F')
"VPA30890F" almak istediğiniz Kuruluş Yöneticisi'nin emp_id ' dir.Kullanıcı tanımlı bir işlev için bir sorgu ekleme hakkında daha fazla bilgi için bkz: Nasıl yapılır: Tablolar, sorgular (Visual veritabanı araçları) Ekle.Kullanıcı tanımlı işlevler eksiksiz bir açıklaması için bkz: Kullanıcı tanımlı işlevler (veritabanı altyapısı).