29. maj 2002 - 13:39Der er
11 kommentarer og 1 løsning
Mange til mange relation
Hvordan skal en SQL sætning se ud til en mange til mange relation?
Jeg har 3 tabeller
Suppliers -SupplierID -Catalog
Catalogs -CatalogID -Name
Suppliers_Catalogs -CatalogID -SupplierID
Hvordan henter jeg hvis jeg har en post i catalog og skal finde den første relateret Supplier til det pågældende katalog.
Suppliers_Catalogs bruger til at lave en mange til mange relation og Suppliers.Catalog relatere til Suppliers_Catalogs.SupplierID og Suppliers_Catalogs.CatalogID til Catalogs.CatalogID
Det skal bruges så jeg kan loope alle kataloger igennem og finde en af de suppliers som den relatere til.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
SELECT c.catalogID, c.Name FROM (Catalogs LEFT JOIN suppliers_catalogs sc ON c.catalogID=sc.catalogID) LEFT JOIN suppliers s ON sc.supplierID=s.supplierID) WHERE c.catalogID = 1
hvis det nu var catalogs.catalogID nr 1 du er ude efter.
SELECT c.catalogID, c.Name FROM ((Catalogs LEFT JOIN suppliers_catalogs sc ON c.catalogID=sc.catalogID) LEFT JOIN suppliers s ON sc.supplierID=s.supplierID) WHERE c.catalogID = 1
Synes godt om
Slettet bruger
29. maj 2002 - 15:47#4
Nej hvor dejligt - det virker...
Kan du ikke lige forklare hvordan det med de forkortelser du laver med sc, s,c - altså hvordan de skal defineres i en SQl så den bruger det som en forkortelse.
Jeg plejer at bruge * for alle felter, er det bedre at skrive dem og hvorfor?
a1 jeg smider lige de point til dig senere, så håber jeg du har kommenteret min ekstra spørgsmål.
Synes godt om
Slettet bruger
29. maj 2002 - 16:00#5
Mangler lige lidt på den SQL streng som jeg glemte at nævne.
Det skal sorteres efter Suppliers.Category feltet og så skal den ikke vise nogle kataloger flere gange kun én gang.
du skal ikke bruge * da det tager alle felter med (der kommer også en fejl da du jo så har flere felter der hedder catalogID (catalogs og suppliers_catalog))
en anden grund til aldrig at bruge * er at du tager alle felter, og ikke kun den du vil / skal bruge (forestil dig hvis du senere puttede 2 notatfelter fyldt med tekst i, det vil tage længere tid at "hente" da du jo henter det hele (og ikke kun det du skal bruge) ))
Forkotelser.... det er standard SQL at gøre det sådan du kan også sagtens gøre det sådan her SELECT Catalogs.catalogID, Catalogs.Name FROM ((Catalogs LEFT JOIN suppliers_catalogs ON Catalogs.catalogID=suppliers_catalogs.catalogID) LEFT JOIN suppliers ON suppliers_catalogs.supplierID=suppliers .supplierID) WHERE Catalogs.catalogID = 1
du kan også select c.* FROM catalogs c (vælger alle fra catalogs) eller select catalogs.* FROM catalogs (vælger alle fra catalogs)
du sortere med ORDER BY supliers.category (hvor har du supliers.category fra? )
for kun at vise et katalog, prøv med SELECT DISTINCT c.catalogID, c.Name FROM ........OSV...:)
:)
Synes godt om
Slettet bruger
29. maj 2002 - 21:11#7
Jeg kunne ikke huske alle felter da jeg skrev spørgsmålet, da jeg var i skole.
Hvis jeg sætter din sorterings kode ind. bliver min SQL sådan her (har ændret noget da lidt flere felter skulle vises og sådan):
SELECT c.catalogID, s.SupplierID, s.Shorttext, s.Category, s.logo, s.Company FROM ((Catalogs c LEFT JOIN suppliers_catalogs sc ON c.catalogID=sc.catalogID) LEFT JOIN suppliers s ON sc.supplierID=s.supplierID ORDER BY supliers.category)
Fejl beskeden er: Der er en syntaksfejl i JOIN-handlingen.
SELECT c.catalogID, s.SupplierID, s.Shorttext, s.Category, s.logo, s.Company FROM ((Catalogs c LEFT JOIN suppliers_catalogs sc ON c.catalogID=sc.catalogID) LEFT JOIN suppliers s ON sc.supplierID=s.supplierID) ORDER BY supliers.category
sånnn :)
Synes godt om
Slettet bruger
29. maj 2002 - 21:24#9
Niks den kommer med følgende fejl...
Der er ikke angivet nogen værdi for en eller flere krævede parametre.
For lidt ekstra hjælp så viser jeg lige hvordan de to tabeller er bygget op som ikke var helt korrekt i starten.
stave fejl... ORDER BY supliers.category skal jo være ORDER BY s.category
Synes godt om
Slettet bruger
29. maj 2002 - 21:37#11
det er dog samme fejl. Hm det begynder at blive irreterende det her...
Synes godt om
Slettet bruger
30. maj 2002 - 15:47#12
Andre der kunne hjælpe til en løsning? en mange-til-mange relation hvor den er sorteret efter en Suppliers.Category se mere info længere oppe...
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.