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.
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
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.