Welcome to Sign in | Help

Re: scrip de select sql server 2000

  •  07-16-2007, 8:26 PM

    Re: scrip de select sql server 2000

    Uite încă o variantă de rezolvare în care folosesc un inner join între două subinterogări totuşi ce trebuie să se întâmple dacă o ţară are două judeţe cu acelaşi număr de locuitori pe primul loc? 

    SELECT Q.NUME_TARA, W.NUME_JUDET, Q.NR_LOCUITORI FROM (
     SELECT NUME_TARA, MAX(NUMAR_LOCUITORI) AS NR_LOCUITORI FROM (
      SELECT NUME_TARA, NUME_JUDET, SUM(NR_LOCUITORI) AS NUMAR_LOCUITORI
      FROM TARA T INNER JOIN JUDET J ON T.ID_TARA=J.ID_TARA INNER JOIN LOCALITATE L ON J.ID_JUDET=L.ID_JUDET
      GROUP BY NUME_TARA, NUME_JUDET
     ) X
     GROUP BY NUME_TARA
    ) Q INNER JOIN (
     SELECT NUME_TARA, NUME_JUDET, NUMAR_LOCUITORI FROM (
      SELECT NUME_TARA, NUME_JUDET, SUM(NR_LOCUITORI) AS NUMAR_LOCUITORI
      FROM TARA T INNER JOIN JUDET J ON T.ID_TARA=J.ID_TARA INNER JOIN LOCALITATE L ON J.ID_JUDET=L.ID_JUDET
      GROUP BY NUME_TARA, NUME_JUDET
     ) Y
    ) W ON Q.NUME_TARA=W.NUME_TARA AND Q.NR_LOCUITORI=W.NUMAR_LOCUITORI

    ORDER BY 1,3 DESC, 2

     

    Datele pentru test:

    INSERT INTO Tara(nume_tara, latitudine, longitudine) VALUES('Romania',0,0)
    INSERT INTO Tara(nume_tara, latitudine, longitudine) VALUES('SUA',0,0)
    GO
    INSERT INTO Judet (ID_Tara,nume_judet, asezare) VALUES (1,'Timis','')
    INSERT INTO Judet (ID_Tara,nume_judet, asezare) VALUES (1,'Constanta','')
    INSERT INTO Judet (ID_Tara,nume_judet, asezare) VALUES (2,'Denver','')
    GO
    INSERT INTO Localitate(ID_Judet,nume_loc,nr_locuitori) VALUES(10,'Timisoara mare',250)
    INSERT INTO Localitate(ID_Judet,nume_loc,nr_locuitori) VALUES(10,'Timisoara mica',25)
    INSERT INTO Localitate(ID_Judet,nume_loc,nr_locuitori) VALUES(20,'Cuza',1250)
    INSERT INTO Localitate(ID_Judet,nume_loc,nr_locuitori) VALUES(20,'Mangalia',270)
    INSERT INTO Localitate(ID_Judet,nume_loc,nr_locuitori) VALUES(30,'denver',11250)

    iar rezultatul este:

    NUME_TARA |  NUME_JUDET   |  NR_LOCUITORI
    SUA              |  Denver              |  11250
    Romania        |  Constanta         |  1520

    Sper că am înţeles bine cerinţa...


    Cătălin D.
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems