Avatar billede mailand Nybegynder
16. marts 2004 - 13:50 Der er 14 kommentarer og
1 løsning

2 x inner join

Hejsan experts!

Jeg har det her system, der viser et products. Derfra skal listes de serveringsforslag, hvor det viste produkt indgår.

Bagved det, ligger en mange-til-mange relation i stil med:

t_cooking
  c_id
  c_name

t_products
  p_id
  p_products

t_cooking_products
  cp_productid
  cp_cookingid

nu har jeg så lavet den her SQL:


SELECT c_id, c_name
FROM t_cooking
INNER JOIN t_cooking_product ON c_id = cp_cookingid
INNER JOIN t_products ON cp_productid = p_id
WHERE p_id = 16 ORDER BY c_name

Når det bliver kørt, får jeg denne fejl:

"Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "c_id = cp_cookingid INNER JOIN t_products ON cp_productid = p_id"

Hjælp?!

#Mailand

DB er Access...
Avatar billede proaccess Nybegynder
16. marts 2004 - 13:57 #1
Prøv med et par paranteser...

SELECT c_id, c_name
FROM (t_cooking
INNER JOIN t_cooking_product ON c_id = cp_cookingid)
INNER JOIN t_products ON cp_productid = p_id
WHERE p_id = 16 ORDER BY c_name

Du behøver vel heller ikke at bruge t_products, hvis du afgrænser på p_id (så kan du lige så godt sige: WHERE cp_productid=16)
Avatar billede mailand Nybegynder
16. marts 2004 - 14:13 #2
jeg har prøvet den, hvor jeg bare spørger på cp_productsid = 16... så siger den:
"Joinudtrykket understøttes ikke."

øhh... ??

Mailand
Avatar billede proaccess Nybegynder
16. marts 2004 - 14:16 #3
SELECT c_id, c_name
FROM t_cooking INNER JOIN t_cooking_product ON c_id=cp_cookingid
WHERE cp_productid=16;
Avatar billede mailand Nybegynder
16. marts 2004 - 14:56 #4
den er stadigvæk ked af det - jeg forstår det ikke. det er typisk den der fejl med, joinudtrykket understøttes ikke... :(
Avatar billede proaccess Nybegynder
16. marts 2004 - 15:01 #5
Er c_id og cp_cookingid samme datatype?
Avatar billede mailand Nybegynder
16. marts 2004 - 15:03 #6
c_id er et Autonumber
cp_cookingid er et Number

... så ja, de bør være ens
Avatar billede mailand Nybegynder
16. marts 2004 - 15:10 #7
nu bliver det sjovt...

jeg porterede over til min ms sql server... og det virkede...

her er min struktur (som altså virker på ms sql)

arrCookings = createArray("SELECT c_id, c_name FROM t_cooking INNER JOIN t_cooking_product ON c_id = cp_cookingid WHERE cp_productid=16",strDSN1)

createArray() er en funktion, der bare smider resultatet i et array vha. getrows().

ser således ud:
function createArray(strSql, strConnection)
' returns a two-dimensional array from a given strSql and strConnection
    strSql = trim(strSql)
    set objRs = server.createobject("adodb.recordset")
    objRs.open strSql, strConnection
        if not objRs.eof then
            createArray = objRs.getrows()
        end if
    objRs.close
    set objRs = nothing
end function
Avatar billede mailand Nybegynder
16. marts 2004 - 15:11 #8
findes der nogen logisk forklaring på, hvorfor det ikke virker på access ?
Avatar billede proaccess Nybegynder
16. marts 2004 - 15:11 #9
?? - så er jeg blank, kan du se tabellerne i design-view?? (jeg er ude på at fastslå at du har stavet tabel- og feltnavne rigtigt)
Avatar billede mailand Nybegynder
16. marts 2004 - 15:14 #10
jep - jeg kan se dem i design view... og er stavet rigtigt... jeg har snart bare lyst til at græde... :-/
Avatar billede mailand Nybegynder
16. marts 2004 - 15:15 #11
- min portering til ms sql var sågar en ren upsizing fra access... så det eneste jeg ændrede, var min connection string.... kan ikke lide access
Avatar billede proaccess Nybegynder
16. marts 2004 - 15:18 #12
Det kan være at Access insisterer på at få tabelnavne med i JOIN'et..

SELECT c.c_id, c.c_name FROM t_cooking AS c INNER JOIN t_cooking_product AS p ON c.c_id = p.cp_cookingid WHERE p.cp_productid=16
Avatar billede mailand Nybegynder
16. marts 2004 - 15:24 #13
haha... tragikomisk... det var det...

SELECT t_cooking.c_id, t_cooking.c_name FROM t_cooking INNER JOIN t_cooking_product ON t_cooking.c_id = t_cooking_product.cp_cookingid WHERE t_cooking_product.cp_productid = " & intId & " ORDER BY t_cooking.c_name

nå ja, det har jeg så kun brugt en dag på... :(
Avatar billede proaccess Nybegynder
16. marts 2004 - 15:27 #14
Nå ja, der er da vel et par timer tilbage af dagen...  Godt at du kom videre!
Avatar billede mailand Nybegynder
16. marts 2004 - 15:29 #15
tja... sandt nok... men tak for den vedholdende hjælp! var lige ved at gå helt i sort. ;)
- kan nu stadigvæk ikke lide access. :o)
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