Avatar billede sjoller Nybegynder
14. august 2001 - 19:09 Der er 9 kommentarer og
1 løsning

Slelect med inner / outer join

Jeg har ingen mulighed for at teste om det virker før i morgen,  men jeg skal have kosntruerert en SQL der vælger skal gøre følgende:

Jeg har to tabeller:
- Product
- Order

I PRODUCTS har jeg alle info om productet, sti til billeder, beskrivelse, navn, pris, osv.

I ORDER har jeg info om bestillingen samt en kolonne der med et nummer refererer til indeks i product og derved definerer hvilket product der posten indeholder.

Jeg skal have lavet en SQL der henter alle poster fra ORDER med \"status = 1 AND org_indeks = [variabel integer] AND purchase_indeks = [variabel lng]\" og samtidig henter de tilhørende data for hvert enkelt product der ligger i tabellen. Recordsettet skal altså laves på grundlag af data fra begge tabeller.

Jeg formoder at der skal bruges noget INNER JOIN eller OUTER JOIN, men ved ikke med sikkerhed.

Avatar billede nuno Nybegynder
14. august 2001 - 19:31 #1
SELECT Order.Felt1, Order.Felt2, Order.FeltN, Products.Navn, Products.Beskrivelse, Products.Pris, Products.ProductID FROM (Order INNER JOIN Products ON Order.ForeignProductID = Products.ProductID) WHERE Order.Status = 1 AND Order.org_indeks = [variabel integer] AND Order.purchase_indeks = [variabel lng]


det skulle gøre det.....

i Order.Felt1, Order.Felt2 osv. sætter du selvfølgelig bare alle de på, som er relevant for hvilke felter du vil have med ud. Jeg har bare skrevet .Felt1 etc. for at angive eksemplet. Det samme gælder for Products - hvor du bare sætter alle de felter på, som du vil have ud fra Products tabellen med Products.FeltNavn

/nuno
Avatar billede sjoller Nybegynder
14. august 2001 - 19:44 #2
Det er lige sådan noget jeg havde håbet. Jeg vender tilbage i morgen når den er afprøvet.

Tusinde tak for hjælpen indtil videre.
Avatar billede alvion Nybegynder
14. august 2001 - 21:48 #3
Jeg ville nu erstatte INNER JOIN med LEFT JOIN
Avatar billede dope Nybegynder
14. august 2001 - 22:36 #4
alvion >>
Hvad er det nu et left join / right join er ?
Avatar billede alvion Nybegynder
15. august 2001 - 03:48 #5
Det har altsammen noget at gøre med, hvordan rækker i den ene tabel uden matchende rækker i den anden tabel behandles.

tabel1 INNER JOIN tabel2 on <betingelse>
fjerner en sammenkobling, hvis betingelsen ikke er opfyldt. Det betyder at rækken i tabel1 ikke kommer med i det endelige resultat

tabel1 LEFT JOIN tabel2 on <betingelse>
beholder rækken fra tabel1, selvom betingelsen ikke er opfyldt. Alle felter udtrukket fra tabel2 udfyldes med NULL værdier.

tabel1 RIGHT JOIN tabel2 on <betingelse>
fungerer som LEFT JOIN, blot er det tabel2, som er den betydende tabel (altså den der beholdes, mens felterne i tabel1 udfyldes med NULL)

RIGHT JOIN findes AFAIK ikke i MySql. Den er også forholdsvis overflødig, idet du kan skrive det samme med left join.
Avatar billede disky Nybegynder
15. august 2001 - 08:43 #6
alvion: kender du en side der grundigt gennemgår sådanne ting som joins osv ?

Altså en god tutorial
Avatar billede alvion Nybegynder
15. august 2001 - 10:28 #7
Nope desværre ikke. Jeg kan anbefale nogle gode bøger omkring databaser, men det er måske lidt overdrevent for dit specifikke problem?
Avatar billede disky Nybegynder
15. august 2001 - 10:37 #8
gute frage :)

Det var egentligt bare af nysgerrighed.

Men får jeg brug for det rent erhvers mæssig, må min arbejds giver bare betale et par bøger :)

Men hvis du har nogle isbn numre ville det være fint
Avatar billede alvion Nybegynder
16. august 2001 - 06:53 #9
Så tror jeg nok jeg vil vælge:

\"Relationsdatabaser og SQL 3. udgave\"

http://bog.ing.dk/default.asp?Action=Details&ISBN=87-571-2248-2
Avatar billede sjoller Nybegynder
26. august 2001 - 19:42 #10
Nuno >>

Jeg ved ikke om det var dine gode råd der fik mig til at forstå og kunne bruge inner join, men her er pts ihvertilfald... :-)

Tak for hjælpen allesammen...
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