Avatar billede lbaad Nybegynder
05. juli 2004 - 11:06 Der er 8 kommentarer og
2 løsninger

SQL query

Hejsa
lige et spm.
hvorfor giver denne sætning en masse navne af de samme??
mangler jeg et join et eller andet sted??

select a.pqz_phone, a.firstname1, a.firstname2, a.lastname, a.address, a.house_number, a.floor, a.zipcode, a.city, b.cvr.cpr.no from person@xxx a, bs_agreement@xxx b
where id in ( select person_id from person_bs_agreement@xxx where bs_agreement_id in (select id from bs_agreement@xxx where id > 140000 and state <> 02 and debit_grp = '00002') )

Resultatet er, at jeg får alle de ønskede kolonner, men jeg får det samme skrevet i alle kolonner undtagen cvr_cpr_no

Mvh
Lars
Avatar billede dadane Novice
05. juli 2004 - 11:08 #1
Det er fordi nogle personer har flere agreements.

Kører CBB med Oracle - det vidste jeg ikke :p
Avatar billede arne_v Ekspert
05. juli 2004 - 11:10 #2
Mangler der ikke en join betingelse:

a.noget = b.nogetandet

?
Avatar billede lbaad Nybegynder
05. juli 2004 - 11:15 #3
dadane > Det kan godt være, at nogle personer har flere agreements, men ikke mere end 2-3 stk. det resultat, som jeg får frem viser omkring 50 stk.
arne_v > jo, det er også det, som jeg er kommet frem til, men jeg kan bare ikke lige gennemskue, hvor det er henne.
Avatar billede dadane Novice
05. juli 2004 - 11:18 #4
Enten

FROM person@xxx a INNER JOIN bs_agreement@xxx b ON a.xxx = b.yyy

Eller

simpelthen som endnu en where. Altså tilføj

AND a.xxx=b.yyy
Avatar billede lbaad Nybegynder
05. juli 2004 - 14:03 #5
vil det også virke i en 8.1.7.4.1??
Jeg får nemlig fejl, når jeg forsøger, at sætte en inner join ind i sætningen
Avatar billede arne_v Ekspert
05. juli 2004 - 14:14 #6
INNER JOIN er en nyere ting i SQL.

Prøv med komma mellem tabel navnenene og den ekstra WHERE.
Avatar billede arne_v Ekspert
05. juli 2004 - 14:15 #7
ekstra WHERE betingelse
Avatar billede coily Nybegynder
08. juli 2004 - 09:17 #8
Prøv denne her (+) er den gamle systax

select    a.pqz_phone, a.firstname1, a.firstname2, a.lastname,
    a.address, a.house_number, a.floor, a.zipcode, a.city, b.cvr.cpr.no
from    person@xxx            a,
    bs_agreement@xxx    b
where    (a eller b).id in (
        select    person_id
        from    person_bs_agreement@xxx
        where bs_agreement_id in (
            select id from bs_agreement@xxx
            where    id         > 140000
            and        state    <>02
            and        debit_grp = '00002'
        )
    )
and    b.noget (+)    = a.noget
Avatar billede lbaad Nybegynder
08. juli 2004 - 09:47 #9
Takker for svarene. Jeg fandt ud af, at lave nogle hjælpetabeller, og fik mit resultat på den måde istedet. Lige nogle svar, så fordeler jeg points

Mvh
Lars
Avatar billede arne_v Ekspert
08. juli 2004 - 10:24 #10
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester