Welcome to Sign in | Help

Re: Group by ... (duplicate)

  •  11-28-2007, 2:16 PM

    Re: Group by ... (duplicate)

    rsocol:

    E normal să nu apară. De exemplu dacă încercăm următoarele query-uri, în Northwind:

    SELECT COUNT(*) as Nr FROM Employees WHERE FirstName='Nimeni'

     

    SELECT FirstName, COUNT(*) as Nr FROM Employees
    WHERE FirstName='Nimeni' GROUP BY FirstName

     

    La primul obţinem: 

    Nr
    -----------
    0
    (1 row(s) affected)

    Însă la al doilea nu obţinem nimic:

    FirstName  Nr
    ---------- -----------
    (0 row(s) affected)

    Ideea e că nu are cum să apară 'Nimeni' în coloana FirstName, dacă în coloana FirstName din tabelă nu apare niciodată 'Nimeni'. 

    Dacă dorim să obţinem:

    FirstName Nr
    --------- -----------
    Nimeni    0
    (1 row(s) affected)

    Atunci o soluţie ar fi:

    SELECT 'Nimeni' as FirstName, COUNT(*) as Nr FROM Employees
    WHERE FirstName='Nimeni'

     

    O altă soluţie, ceva mai complicată, care are avantajul că scriem 'Nimeni' o singură dată, ar fi: 

    SELECT FirstName, (
                SELECT COUNT(*) FROM Employees e WHERE e.FirstName=x.FirstName
    ) as Nr
    FROM (SELECT 'Nimeni' as FirstName) x

    Răzvan

     

    Cred ca am exemplificat problema destul de stangaci. Am o metoda pur proprie de a ma exprima :)

    Filtrul din exemplul meu si, "Nimeni" din al tau, nu era neaparat necesar (si nici nu era folosit), l-am pus doar ca sa exemplific cu un rezultat de 1 rand, respectiv 0, dupa cum ai facut-o si tu.

     Ca sa "pictez" mai bine problema, column4 este o coloana de id-uri ce inregistreaza anumite documente, care, la randul lor, in functie de anumite flag-uri au comportamente diferite.

     Acea coloana era si coloana pe care faceam join cu aceasta tabela si ma interesa sa-mi afiseze si id-urile ce nu contineau un anume flag (E destul de mult de explicat, tine de scadente, incasari, retururi, etc si nu are rost sa va plictisesc cu asta).

     Structura bazei este destul de complicata si era nevoie si de un al 3-lea self join ca sa functioneze corect.

     

    Dar, o sa va bucurati cu totii ca in final, am rescris interogarea, urmand alt sir logic si am ocolit totalmente aceasta problema.

     

    Va multumesc tuturor pt raspunsuri,
    V.

     

    P.S.: tot m-ar interesa daca exista vreo modalitate de a afisa ceea ce am exemplificat mai sus si in alta metoda decat cea expusa de Razvan.
    Group by all nu este o varianta :)


     

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems