Welcome to Sign in | Help
in Search

scrip de select sql server 2000

Last post 07-17-2007, 6:52 PM by Alex. 34 replies.
Page 1 of 3 (35 items)   1 2 3 Next >
Sort Posts: Previous Next
  •  07-16-2007, 1:25 PM 2253

    scrip de select sql server 2000

    salut...am si eu o problema cu un script de select

    am 3 tabele

    CREATE TABLE [dbo].[Judet] (

                [id_judet] [int] IDENTITY (10, 10) NOT NULL ,

                [id_tara] [int] NOT NULL ,

                [nume_judet] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,

                [asezare] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL

    ) ON [PRIMARY]

    GO

     

    CREATE TABLE [dbo].[Localitate] (

                [id_loc] [int] IDENTITY (100, 3) NOT NULL ,

                [id_judet] [int] NOT NULL ,

                [nume_loc] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,

                [nr_locuitori] [int] NULL

    ) ON [PRIMARY]

    GO

     

    CREATE TABLE [dbo].[Tara] (

                [id_tara] [int] IDENTITY (1, 1) NOT NULL ,

                [nume_tara] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,

                [latitudine] [int] NOT NULL ,

                [longitudine] [int] NOT NULL

    ) ON [PRIMARY]

    GO

     

    ALTER TABLE [dbo].[Judet] WITH NOCHECK ADD

                 PRIMARY KEY  CLUSTERED

                (

                            [id_judet]

                )  ON [PRIMARY]

    GO

     

    ALTER TABLE [dbo].[Localitate] WITH NOCHECK ADD

                 PRIMARY KEY  CLUSTERED

                (

                            [id_loc]

                )  ON [PRIMARY]

    GO

     

    ALTER TABLE [dbo].[Tara] WITH NOCHECK ADD

                 PRIMARY KEY  CLUSTERED

                (

                            [id_tara]

                )  ON [PRIMARY]

    GO

     

    ALTER TABLE [dbo].[Judet] ADD

                CONSTRAINT [fk_tara] FOREIGN KEY

                (

                            [id_tara]

                ) REFERENCES [dbo].[Tara] (

                            [id_tara]

                )

    GO

     

    ALTER TABLE [dbo].[Localitate] ADD

                CONSTRAINT [fk_judet] FOREIGN KEY

                (

                            [id_judet]

                ) REFERENCES [dbo].[Judet] (

                            [id_judet]

                )

    GO

    as dori sa fac un select care sa-mi intoarca tara,nume_judet,localitate al localitatilor cu cel mai mare numar de locuitori

    multumesc mult

  •  07-16-2007, 1:44 PM 2254 in reply to 2253

    Re: scrip de select sql server 2000

    Alex:

    ... cu cel mai mare numar de locuitori...

     Un SELECT TOP(n).....FROM......(cu join-urile de rigoare) ORDER BY...DESC nu te ajuta? 

  •  07-16-2007, 1:46 PM 2255 in reply to 2254

    Re: scrip de select sql server 2000

    ba cred ca da....dar nu-mi iese de nici o culoare :(

     

    de exemplu am selectul asta

    SELECT DISTINCT dbo.Tara.nume_tara, dbo.Judet.nume_judet, dbo.Localitate.nr_locuitori
    FROM         dbo.Judet INNER JOIN
                          dbo.Localitate ON dbo.Judet.id_judet = dbo.Localitate.id_judet INNER JOIN
                          dbo.Tara ON dbo.Judet.id_tara = dbo.Tara.id_tara
    GROUP BY dbo.Judet.nume_judet, dbo.Tara.nume_tara, dbo.Localitate.nr_locuitori

    care imi intoarce

    nume_tara    nume_judet     nr_locuitori

    romania           ilfov                  5345

    romania           bihor                123

    sua                  washigton dc    2745

     

    eu as vrea sa-mi intoarca doar  romania ilfov si sua washington dc.....fara bihor...........deci judetul din fiecare tara cu cel mai mare nr de locuitori

    multumesc

  •  07-16-2007, 2:01 PM 2256 in reply to 2255

    Re: scrip de select sql server 2000

    Incearca sa "bagi" UN SELECT TOP(2) <field_list> FROM ......ORDER BY Localitate.nr_locuitori DESC

     (nu am cum sa testez codul...sper sa nu gresesc prea tare)

    Si incearca sa "scoti" GROUP BY...

    De fapt:

    SELECT TOP(2)  dbo.Tara.nume_tara, dbo.Judet.nume_judet, dbo.Localitate.nr_locuitori

     FROM         dbo.Judet INNER JOIN
                          dbo.Localitate ON dbo.Judet.id_judet = dbo.Localitate.id_judet INNER JOIN
                          dbo.Tara ON dbo.Judet.id_tara = dbo.Tara.id_tara

     ORDER BY Localitate.nr_locuitori DESC

    (din nou: cod netestat, deci scuze...) 

  •  07-16-2007, 2:06 PM 2257 in reply to 2256

    Re: scrip de select sql server 2000

    sau ceva de genul

    o functie care sa-mi scoata top 1 localitate cu cel mai mare numar de locuitori si apoi un select tara,functie din SELECT DISTINCT nume_localitate FROM Localitate.....

  •  07-16-2007, 2:07 PM 2258 in reply to 2256

    Re: scrip de select sql server 2000

    pai nu vreau top 2.....ca exista mai multe judete, tari.....alea nu sunt singurele inregistrari....e vorba de mai multe tari, judete, localitati

    multumesc.

  •  07-16-2007, 2:12 PM 2259 in reply to 2258

    Re: scrip de select sql server 2000

    Da un exemplu de rezultat...
  •  07-16-2007, 2:15 PM 2260 in reply to 2258

    Re: scrip de select sql server 2000

    poate nu ma exprim eu cum trebuie...iata intrebarea exacta

    1. O aplicatie are nevoie de date privind populatia Europei detaliate la nivel de tara, unitate administrativ-teritoriale(judet) si localitate.
      1. Modelati logic informatiile de mai sus (tabele, coloane, etc)
      2. Creati tabela/tabelele folosind T-SQL
      3. Scrieti selecturile pentru obtinerea urmatoareleor informatii:

                                                                   i.      Populatia totala a Europei

                                                                 ii.      Primele 10 cele mai populate tari si populatia acestora

                                                                iii.      Cea mai populata unitate teritoriala din fiecare tara, populatia ei si tara de care apartine

                                                               iv.      Daca exista 2 sau mai multe judete cu acelasi numar de mii de locuitori

      1. In urma unui recensamant se va updata baza de date dintr-o tabela cu urmatoarea structura:

    idLocuitor, NumeLocuitor, IdLocalitateaUndeLocuieste

                            scrieti instructiunea care realizeaza acest lucru.

     

    ma intereseaza doar iii si iv

    multumesc mult

  •  07-16-2007, 2:52 PM 2261 in reply to 2255

    Re: scrip de select sql server 2000

    Incercati group by dupa tara si judet si apoi max(nr_locuitori) adica ceva de genul

    SELECT  dbo.Tara.nume_tara, dbo.Judet.nume_judet, max(dbo.Localitate.nr_locuitori)
    FROM         dbo.Judet INNER JOIN
                          dbo.Localitate ON dbo.Judet.id_judet = dbo.Localitate.id_judet INNER JOIN
                          dbo.Tara ON dbo.Judet.id_tara = dbo.Tara.id_tara
    GROUP BY dbo.Judet.nume_judet, dbo.Tara.nume_tara


    Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
  •  07-16-2007, 3:22 PM 2262 in reply to 2261

    Re: scrip de select sql server 2000

    pai asa imi scoate toate judetele din tara respectiva...eu am nevoie doar de cea cu cel mai mare numar de locuitori

     

    alex.

  •  07-16-2007, 3:30 PM 2263 in reply to 2262

    Re: scrip de select sql server 2000

    pt pct. iii ar fi ceva de genul....dar mi se pare super complicat

    select tb.* from

    (

    select sum(nr_locuitori)nrloc,t.id_tara,t.nume_tara,j.nume_judet

    from judet j join localitate l on j.id_judet=l.id_judet

    join tara t on t.id_tara=j.id_tara

    group by nume_judet,t.nume_tara,t.id_tara

    ) tb

    join tara t2 on tb.id_tara=t2.id_tara and

    nrloc=( select max(nrloc) from (select sum(nr_locuitori)nrloc,j.id_tara

                                           from judet j join localitate l on j.id_judet=l.id_judet

                                           where j.id_tara=t2.id_tara

                                           group by nume_judet,j.id_tara

                                           )tab2)

  •  07-16-2007, 3:39 PM 2264 in reply to 2261

    Re: scrip de select sql server 2000

    Sper ca asta e mai bun:

    SELECT  dbo.Tara.nume_tara, dbo.Judet.nume_judet, Localitate.nume_localitate
    FROM Tara t JOIN Judet j ON t.TaraID = j.TaraID
    JOIN Localitate l ON j.JudetID = l.JudetID
    JOIN(
        SELECT l.LocalitateID, MAX(l.nr_locuitori) AS mx
        FROM Localitate l GROUP BY l.LocalitateID
    ) AS x ON x.LocalitateID = l.LocalitateID
    WHERE l.nr_locuitori = x.mx

    *** E mai greu de nimerit cand nu ai date de "test"...eu am testat pe o structura mai simpla (2 tabele cu cate 3 - 4 inregistrari) si aparent e OK

    *** De unde iei intrebarile astea? Mi-ar prinde bine si mie sa ma exersez in chestiuni mai "aritmetice" - de aceea particip la discutie...

     

     

     

  •  07-16-2007, 3:52 PM 2265 in reply to 2264

    Re: scrip de select sql server 2000

    nu merge cu selectul tau....pt ca nu face suma pe toate localitatile din fiecare judet ca sa poata scoate judetul cu cel mai mare numar de locuitori ai fiecarei tari

    e o intrebare de la un interviu....care ma tot roade....

    pt punctul 1B....cea cu recensamantul am gasit rezolvarea asta

    update loc
    set nr_locuitori = nr_locuitori + tab1.nr_loc from localitate loc join (
    select count(IDLocuitor) nr_loc, Id_loc  from Localitate l join recensamant r on l.id_Loc = r.IDLocalitateUndeLocuieste
    group by ID_loc) tab1 on loc.ID_loc = tab1.Id_Loc

    dar pt iv inca nu am solutie :(

    multumesc.

    alex.

  •  07-16-2007, 4:00 PM 2266 in reply to 2265

    Re: scrip de select sql server 2000

    mai am o intrebare daca te intereseaza

    1. O tabela care contine informatii despre planetele sistemului solar si satelitii acestora are urmatoarea structura:

    Id, Nume, IdPlaneta (id-ul planetei in jurul careia orbiteaza satelitul, null pentru planete)

    Scrieti selecturile pentru obtinerea urmatoareleor informatii:

    a.       Planetele fara sateliti

    b.      Toate planetele cu satelitii lor, inclusiv planetele fara sateliti

    c.       Planetele cu mai mult de 20 de sateliti

    daca gasesti prima rezolvarea te rog sa o postezi si tu.....:)....dar sa nu uitam nici de pct.iv de la prima problema. :)

    alex.

  •  07-16-2007, 4:03 PM 2267 in reply to 2264

    Re: scrip de select sql server 2000

    ...mda, asta selecteaza cel mai populat oras...m-am cam grabit si mi-a "scapat" "unitate teritoriala"...

    Imi poti trimite si mie intrebarile astea? Daca da, iti "dau" o adresa de mail in mesaj privat... 

     

Page 1 of 3 (35 items)   1 2 3 Next >
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems