14. august 2001 - 19:09Der 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.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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
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.
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...
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.