Avatar billede OWB Novice
26. februar 2006 - 23:04 Der er 10 kommentarer og
1 løsning

Forespørgsel i flere tabeller

Hej.

Jeg ved for lidt om SQL, men håber jeg kan få noget hjælp til at tilrette en forespørgsel i noget eksisterende.

Jeg har en web-butik der kører under ASP, og med en Access DB.

En forespørgsel lister nogle kategorier op, det sker med følgende:

ElseIf IsNumeric(CatID) AND CatID <> "" Then

Set pcat = Server.CreateObject("ADODB.Recordset")
sql= "SELECT Titulo, browsetype, parentid, txtDescription FROM categories WHERE CatID= " & CatID

pcat.Open sql,Conn, adOpenStatic, adLockReadOnly

If NOT (pcat.EOF AND pcat.BOF) Then
strBrowse = pcat("browsetype")
strSection = pcat("Titulo")
strSectionDescription = pcat("txtDescription")
   
If shop_TabControl = "custom" Then
Session("tab") = "products"
ElseIf shop_TabControl = "categories" Then
If pcat("parentid") = 0 Then Session("tab") = CStr(CatId)
End If
       
pcat.close
End If


Ud over feltererne “Titulo, browsetype, parentid, txtDescription” fra “categories” tabellen, vil jeg nu også gerne have feltet ”Manufacturer” fra ”Manufacturer” tabellen med, kan det lade sig gøre?

Et skærmdump af de samlede relationer mellem tabellerne er at finde her: http://85.81.103.17/060226.htm

På forhånd tak.
Avatar billede mjense173 Nybegynder
27. februar 2006 - 02:06 #1
SELECT
c.Titulo,
c.browsetype,
c.parentid,
c.txtDescription,
m.Manufacturer
FROM
categories c
Manufacturer m
WHERE CatID=
Avatar billede mjense173 Nybegynder
27. februar 2006 - 02:07 #2
Skulle nok være:
WHERE c.CatID= " & CatID
Avatar billede mjense173 Nybegynder
27. februar 2006 - 02:10 #3
Den er ikke testet, men det er noget i den stil..
Bemærk at jeg har skrevet ".. FROM categories c .."
På denne måde kan man henvise unikt til et felt der findes i begge tabeller..

eks.:
  c.id
  m.id
hvis der var et felt "id" i begge tabeller.

Jeg kan dog ikke se hvordan din tabel er linket sammen med Manufacturer-tabellen?
Avatar billede terry Ekspert
27. februar 2006 - 08:19 #4
sql= "SELECT Titulo, browsetype, parentid, txtDescription, Manufacturer.Manufacturer
FROM categories INNER JOIN Manufacturer ON categories.ManuID = Manufacturer.ManuID WHERE CatID = " & CatID
Avatar billede OWB Novice
27. februar 2006 - 09:17 #5
-> mjense173, "Categories" tabellen har ikke direkte noget felt til fælles med "Manufacturer" tabellen. Jeg havde håbet man via "ProductToCategory" og "Products" tabellerne kunne joine dem?

-> terry, "ManuID" findes ikke i "Categories" tabellen, er det ikke nødvendigt i dit forslag?

Jeg havde gættet på noget i retning af:

.....FROM Categories INNER JOIN ProductToCategory ON Categories.CatID = ProductToCategory.CatID INNER JOIN Products ON ProductToCategory.ProdID = Products.ProdID INNER JOIN Manufacturer ON Products.ManuID = Manufacturer.ManuID WHERE CatID = " & CatID

Kan man det?
Avatar billede terry Ekspert
27. februar 2006 - 09:39 #6
Sorry, I'm not thinking there!

If I understand your relationhsips correctly you can have more than one Product in a Category. If that is correct then your SQL will (can) return more than one record fro each category. Is that what you want?
Avatar billede OWB Novice
27. februar 2006 - 09:57 #7
That's right. Each Category contains several products, like this: http://www.prinsesserogpirater.dk/browse.asp?cat=11

My problem is to fill out the Manufacturer name below each product where it now says "Mærke:"

Is it possible without days of code-changing?  :-)
Avatar billede terry Ekspert
27. februar 2006 - 10:15 #8
yes it should be possible in SQL.

Try making aquery in Access query builder.

Add the tables to the query. Then make the relationships, and then choose the fields you want to see in the result.

Then save the query and give it a name, for example qryCategories.

Then in your ASP you can use.

"SELECT * from qryCategories WHERE CatID = " & CatID


If you cant make the query thenyou can send me your database and I can maybe make it for you.

eksperten@NOSPAMsanthell.dk

remove NOSPAM
Avatar billede OWB Novice
28. februar 2006 - 00:40 #9
Hi.

I will try it out tomorrow, hope its OK.

Thanks, Ole.
Avatar billede terry Ekspert
01. marts 2006 - 10:57 #10
I've now made a query named qryProducts

SELECT Products.*, ProductToCategory.CatID AS MainCatID, Manufacturer.Manufacturer, Categories.CatID AS CatCatID
FROM Manufacturer RIGHT JOIN (Products INNER JOIN (Categories INNER JOIN ProductToCategory ON Categories.CatID = ProductToCategory.CatID) ON Products.ProdID = ProductToCategory.ProdID) ON Manufacturer.ManuId = Products.ManuID
WHERE (((Categories.Show)=1) AND ((Products.Show)=1));

and called using

SELECT * from qryProducts WHERE CatCatID = " & CatID &  “ “ & sqlOrderBy
Avatar billede OWB Novice
01. marts 2006 - 11:27 #11
Thanks a lot Terry. :-)  Problem solved.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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