28. maj 2001 - 19:25Der 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.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
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
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*
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.
Synes godt om
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;
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-
Synes godt om
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;
SELECT A_FELT,A_FELT2 FROM A UNION SELECT B_FELT2 FROM B , A WHERE B.B_FELT1 = A.A_FELT1
Synes godt om
Ny brugerNybegynder
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.