Avatar billede shjdsi Nybegynder
28. maj 2001 - 19:25 Der er 7 kommentarer og
2 løsninger

sql spørgsmål i oracle 8i

Jeg skal have alle records fra tabel A, A_felt1 og A_felt2
og kun de records fra tabel B B_felt2 hvor B_felt1 er lig med tabel A A_felt1.

Så hvis jeg prøver følgende

select A.A_felt1, A.A_felt2,B.B_felt2
where B.Bfelt1 = A.felt1 

Giver det mig en masse records med reduntdante data. Jeg tror jeg skal lave en outer join hvor jeg kun får de felter mede fra tabel B som matcher min where clouse.

Men jeg ved ikke hvordan.
Please
Avatar billede dudal Nybegynder
28. maj 2001 - 20:06 #1
Prøv med noget i denne stil:

SELECT A.A_felt1, A.A_felt2, B.B_felt2 FROM A INNER JOIN B ON A.A_felt1 = B.B_felt1

Jeg er ikke sikker på at det virker på Oracle, men det burde ikke være noget problem, da det er std. sql syntax.

Mvh
Jesper
Avatar billede shjdsi Nybegynder
28. maj 2001 - 20:15 #2
Det virker ikke rigtigt selvom om jeg tror terminologien er rigtig nok, men udtrykket inner join findes ikke i oracle, så jeg skal alså lige have fundet ud af hva man så skal skrive
Avatar billede pnielsen Nybegynder
28. maj 2001 - 23:10 #3
hmmmm...  i oracle hedder det:

ORACLE                              SQL: 1999
----------------------------------------------------------------------------
Equi-Join                          Natural/Inner Join
Outer-Join                          Left Outer Join
Self-Join                          Join ON
Non-Equi-Join                      Join USING
Cartesian Product                  Cross Join

Hvad med en distinct på din select ???


Jeg tænkte også på noget med....
        select A.A_felt1, A.A_felt2,B.B_felt2 from a.xxxx,b.yyyyy
              where B.Bfelt1 = A.felt1 
                  and exists
                  (select  ......  ));
men det er nok ikke lige den her *S*
Avatar billede pnielsen Nybegynder
28. maj 2001 - 23:12 #4
Prøv at kigge i online- manualen under Equi-Join... ellers må jeg lige
finde den frem i morgen... har den ikke lige her !
Avatar billede shjdsi Nybegynder
28. maj 2001 - 23:35 #5
Jeg bruger toad og er logget på databasen via isdn så jeg har desværre ingen online maual.
men er \"equi-join\" et udtryk man kan bruge ligesom minus except og de andre indbyggede ord i SQL?

Iøvrigt har jeg fået det til at virke ved at joine på 4 tabeller i databasen.
men det burde iøvrigt kunne lade sig gøre med noget i stil med denne inner join on metode som dudal foreslog så point er åbne hvis nogen vil give deres sidste svar.

Avatar billede Slettet bruger
29. maj 2001 - 09:25 #6
Hvorfor kan du ikke bare skrive

SELECT A_felt1, A_felt2, B_felt2
FROM A, B
WHERE B_felt1 = A_felt1;

?
Avatar billede shjdsi Nybegynder
29. maj 2001 - 09:59 #7
joern_h>>
Når jeg gør dette for jeg ca 2.5 mill records,
tabel A indeholder statiske data, 68 records med faste typer, tabel B indeholder ca 20000 records med dynamiske data, i denne select ,vil den tage alle felter fra B som også findes i A, og hvis der f.eks i felt B er 300 records med værdien svend, kan du se at det ikke ville fungere. Derfor er jeg blevet nød til at joine på andre columns i andre tabeller. Det selfølgelig også noget at gøre med hvordan databasen er designet.
Dette er min teori anyway jeg er ret grøn i SQL.
Simon-
Avatar billede Slettet bruger
29. maj 2001 - 10:03 #8
Så skriv

SELECT A_felt1, A_felt2, B_felt2
FROM A, B
WHERE B_felt1 = A_felt1;
GROUP BY A_felt1, A_felt2, B_felt2;
Avatar billede jyrgen Nybegynder
31. maj 2001 - 08:49 #9
Denne er måske et forsøg værd.

SELECT A_FELT,A_FELT2
FROM A
UNION
SELECT B_FELT2
FROM B , A
WHERE B.B_FELT1 = A.A_FELT1



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