Aracılığıyla paylaş


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ı).