Megosztás a következőn keresztül:


Sorcsoportok összecsukása (Visual Database Tools)

A következőkre vonatkozik:SQL Server

Létrehozhat egy lekérdezési eredményt, amelyben minden eredménysor egy teljes sorcsoportnak felel meg az eredeti adatokból. Sorok összecsukásakor több dolgot is érdemes megfontolni:

  • Kiküszöbölheti az ismétlődő sorokat, Egyes lekérdezések olyan eredményhalmazokat hozhatnak létre, amelyekben több azonos sor is megjelenik. Létrehozhat például egy eredménykészletet, amelyben minden sor egy szerzőt tartalmazó város város- és államnevét tartalmazza – de ha egy város több szerzőt tartalmaz, több azonos sor is létezik. Az eredményként kapott SQL a következőképpen nézhet ki:

    SELECT city,
           state
    FROM authors;
    

    Az előző lekérdezés által létrehozott eredményhalmaz nem túl hasznos. Ha egy város négy szerzőt tartalmaz, az eredményhalmaz négy azonos sort tartalmaz. Mivel az eredményhalmaz nem tartalmaz más oszlopokat, mint a város és az állam, nem lehet megkülönböztetni egymástól az azonos sorokat. Az ilyen ismétlődő sorok elkerülésének egyik módja, ha további oszlopokat tartalmaz, amelyek a sorokat eltérővé tehetik. Ha például a szerző nevét is tartalmazza, minden sor eltérő (feltéve, hogy egyetlen városban sem él két hasonló nevű szerző). Az eredményként kapott SQL a következőképpen nézhet ki:

    SELECT city,
           state,
           fname,
           minit,
           lname
    FROM authors;
    

    Az előző lekérdezés természetesen megszünteti a tünetet, de nem igazán oldja meg a problémát. Ez azt jelenti, hogy az eredményhalmaz nem rendelkezik ismétlődésekkel, de már nem a városokra vonatkozó eredményhalmaz. Ha meg szeretné szüntetni az eredeti eredményhalmazban az ismétlődéseket, és továbbra is minden sor leír egy várost, létrehozhat egy lekérdezést, amely csak különálló sorokat ad vissza. Az eredményként kapott SQL a következőképpen nézhet ki:

    SELECT DISTINCT city,
                    state
    FROM authors;
    

    Az ismétlődő sorok kizárásával kapcsolatos részletekért lásd: Ismétlődő sorok kizárása.

  • Sorcsoportok alapján is kiszámíthat Vagyis sorcsoportokban összegzheti az információkat. Létrehozhat például egy eredményhalmazt, amelyben minden sor tartalmazza egy szerzőt tartalmazó város városának és államnevét, valamint az adott városban található szerzők számát. Az eredményként kapott SQL a következőképpen nézhet ki:

    SELECT city,
           state,
           COUNT(*)
    FROM authors
    GROUP BY city, state;
    

    A sorok csoportjainak kiszámításáról további információt a lekérdezés eredményeinek összegzése , valamint a Rendezés és a lekérdezési eredmények csoportosítása című témakörben talál.

  • A kijelölési feltételek használatával sorcsoportokat is felvehet Létrehozhat például egy eredményhalmazt, amelyben minden sor tartalmazza a több szerzőt tartalmazó város város- és államnevét, valamint az adott városban található szerzők számát. Az eredményként kapott SQL a következőképpen nézhet ki:

    SELECT city,
           state,
           COUNT(*)
    FROM authors
    GROUP BY city, state
    HAVING COUNT(*) > 1;
    

    A kijelölési feltételek sorcsoportokra való alkalmazásával kapcsolatos részletekért lásd: Feltételek megadása csoportokhoz , valamint A HAVING és a WHERE záradékok használata ugyanabban a lekérdezésben.