---
title: "Missing operator"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/59380-missing-operator"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Jesper T"
published: "2002-11-18T02:43:33.000Z"
updated: "2002-11-21T14:38:12.000Z"
replies: 34
views: 574
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/59380-missing-operator"
---

# Missing operator

_Sida 1 av 2._

## #1 — Jesper T, 2002-11-18T02:43Z

> Microsoft JET Database Engine error '80040e14' 
> 
> Syntax error (missing operator) in query expression ''. 
> 
> calweek.asp, line 123

 

```
sql="SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight"& _ 
          " FROM (Calendar k LEFT JOIN"& _ 
          " Users p ON k.namn_id = p.P_id) LEFT JOIN"& _ 
          " notes n ON k.namn_id = n.N_namn_id AND k.datum = n.N_datum"& _ 
          " Weight w k.namn_id = w.W_per_id AND k.datum = w.W_date"&_  
          " WHERE k.namn_id = " & Id & " AND k.datum = #" & d & "#"
```

 
Jag skulle vilja få med tabellen som heter "Weight" men det blir fel hur jag än vrider och vänder på detta. 
Några idéer?

Permalänk: https://www.webforum.nu/p/59380

## #2 — LarsG, 2002-11-18T10:22Z

Lägg till en utskrift av frågan

```
sql="SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight"& _ 
          " FROM (Calendar k LEFT JOIN"& _ 
          " Users p ON k.namn_id = p.P_id) LEFT JOIN"& _ 
          " notes n ON k.namn_id = n.N_namn_id AND k.datum = n.N_datum"& _ 
          " Weight w k.namn_id = w.W_per_id AND k.datum = w.W_date"&_  
          " WHERE k.namn_id = " & Id & " AND k.datum = #" & d & "#"
response.write sql
response.end
```

Permalänk: https://www.webforum.nu/p/859784

## #3 — Jesper T, 2002-11-18T12:30Z

Då står det:

> SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight FROM (Calendar k LEFT JOIN Users p ON k.namn_id = p.P_id) LEFT JOIN notes n ON k.namn_id = n.N_namn_id AND k.datum = n.N_datum Weight w k.namn_id = w.W_per_id AND k.datum = w.W_date WHERE k.namn_id = 22 AND k.datum = #2002-11-18#

Permalänk: https://www.webforum.nu/p/859839

## #4 — LarsG, 2002-11-18T12:39Z

Det kunde man ha sett på en gång om man tittat lite

```
sql="SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight"& _ 
          " FROM (Calendar k LEFT JOIN"& _ 
          " Users p ON k.namn_id = p.P_id) LEFT JOIN"& _ 
          " notes n ON k.namn_id = n.N_namn_id AND k.datum = n.N_datum"& _ --- här saknas något
          " Weight w k.namn_id = w.W_per_id AND k.datum = w.W_date"&_  
          " WHERE k.namn_id = " & Id & " AND k.datum = #" & d & "#"
```

Skall det vara ytterligare en left join där weight ingår eller?

Permalänk: https://www.webforum.nu/p/859844

## #5 — Jesper T, 2002-11-18T13:04Z

Men petar jag in LEFT JOIN där så står det samma fel och sätter jag paranteser så står det: Syntax error in FROM clause

Weight-tabellens värden skall motsvara samma id och datum som clalendertabellen och notestabellen.

Permalänk: https://www.webforum.nu/p/859862

## #6 — LarsG, 2002-11-18T13:12Z

Access är ju speciellt med hur man får skriva join. Det brukar  behövas en hel del parenteser

Så här kanske

```
sql="SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight"& _ 
          " FROM ((Calendar k LEFT JOIN"& _ 
          " Users p ON k.namn_id = p.P_id) LEFT JOIN"& _ 
          " notes n ON (k.namn_id = n.N_namn_id AND k.datum = n.N_datum)) LEFT JOIN "& _ 
          " Weight on (w k.namn_id = w.W_per_id AND k.datum = w.W_date)"&_  
          " WHERE k.namn_id = " & Id & " AND k.datum = #" & d & "#"
```

Permalänk: https://www.webforum.nu/p/859871

## #7 — Jesper T, 2002-11-18T14:09Z

Då står det:

> Syntax error (missing operator) in query expression 'w k.namn_id = w.W_per_id AND k.datum = w.W_date'

Permalänk: https://www.webforum.nu/p/859895

## #8 — Jesper T, 2002-11-18T14:14Z

Ahhh, jag flyttade en parantes till vänster om "w"- funkar nu, Tack.

```
sql="SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight"& _ 
          " FROM ((Calendar k LEFT JOIN"& _ 
          " Users p ON k.namn_id = p.P_id) LEFT JOIN"& _ 
          " notes n ON (k.namn_id = n.N_namn_id AND k.datum = n.N_datum)) LEFT JOIN "& _ 
          " Weight [b]w on ([/b]k.namn_id = w.W_per_id AND k.datum = w.W_date)"&_  
          " WHERE k.namn_id = " & Id & " AND k.datum = #" & d & "#"
```

Permalänk: https://www.webforum.nu/p/859898

## #9 — LarsG, 2002-11-18T14:14Z

```
sql="SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight"& _ 
          " FROM ((Calendar k LEFT JOIN"& _ 
          " Users p ON k.namn_id = p.P_id) LEFT JOIN"& _ 
          " notes n ON (k.namn_id = n.N_namn_id AND k.datum = n.N_datum)) LEFT JOIN "& _ 
          " Weight w on (k.namn_id = w.W_per_id AND k.datum = w.W_date)"&_  
          " WHERE k.namn_id = " & Id & " AND k.datum = #" & d & "#"
```

ett w hamnade lite snett

Permalänk: https://www.webforum.nu/p/859900

## #10 — Jesper T, 2002-11-18T14:34Z

Nu till den väsentliga biten.
W_weight visar inget när jag loppar ut recsetet.
Men skriver jag endast:

```
 "select * from weight where W_per_id = " & Id & " AND W_date = #" & d & "#"
```

Så visas det?Konstigt!

Permalänk: https://www.webforum.nu/p/859908

## #11 — Jesper T, 2002-11-18T15:51Z

Ingen som vet?

Permalänk: https://www.webforum.nu/p/859948

## #12 — Jesper T, 2002-11-18T21:40Z

Nu ändrade jag till detta:

```
SQL = "SELECT n.Notes,n.N_datum,n.N_Id, k.Frukt_id, n.N_namn_id,w.W_weight" & vbCrLf & _ 
          " FROM (Calendar k LEFT JOIN" & vbCrLf & _ 
          " Weight w ON k.namn_id = w.W_per_id AND k.datum = w.W_date) LEFT JOIN" & vbCrLf & _ 
          " notes n ON k.namn_id = n.N_namn_id AND k.datum = n.N_datum" & vbCrLf & _ 
          " WHERE k.namn_id = " & Id & " AND k.datum = #" & d & "#"
```

Posterna som ligger i "weight-tabellen" syns om det är någon annan händelse i calendar tabellen med samma datum.

Men inte om det endast är en post på ett visst datum i weight-tabellen.
Konstigt!

Permalänk: https://www.webforum.nu/p/860118

## #13 — Jesper T, 2002-11-19T01:45Z

Antagligen är jag dum i huvudet men det ända som skall vara lika i samtliga tabeller som skall hämtas är ju datumet och id:t. 
Om så är fallet så skall de posterna skrivas ut, en post i weight, notes eller calender så skall detta skrivas ut på aktuellt datum.
De skall inte på annat sätt vara beroende av varandra.
Nu så skrivs weight ut endast om calender har en post med samma kriterier, det är FEL!

Hur gör man det?

Så här såg det ut förut men då blir det ju RIKTIGT fel:

```
SQL="select w.*,k.*,n.* "&_ 
" from Weight w,Calendar k,Notes n "&_ 
" where k.namn_id = w.W_per_id AND k.datum = w.W_date"&_ 
" or k.namn_id = n.N_namn_id AND k.datum = n.N_datum"&_ 
" or k.namn_id = " & Id & " AND k.datum = #" & d & "#"
```

Permalänk: https://www.webforum.nu/p/860195

## #14 — LarsG, 2002-11-19T11:55Z

Det verkar suspekt detta. Om du ändrar så att du har en inner join mellan kalender och weight då?

Permalänk: https://www.webforum.nu/p/860347

## #15 — Jesper T, 2002-11-19T18:46Z

Glöm all tidigare kod.(Jag vet inte vad jag håller på med) :l 

Jag skulle villja få ut alla poster ifrån calender, weight, notes som har samma id och datum. Ingen av tabellerna skall ha något annat gemensamt än att id´t och datumet skall vara de samma.
Låt säga att jag har dessa poster i Arnes loop.(Arne har tex id=22)

2002-11-04
Notes: Här är en dum text...
Weight: 100kg

2002-12-05
Weight: 99kg

2002-12-08
Weight: 98kg
Calender: Tandläkaren

Varje datum skall kunna skriva ut poster ur samtliga tabeller om datumet är det samma.

Permalänk: https://www.webforum.nu/p/860639

## #16 — LarsG, 2002-11-19T22:01Z

I så fall borde det bli en vanlig inner join

```
SQL="select w.*,k.*,n.* "&_ 
" from Weight w,Calendar k,Notes n "&_ 
" where k.namn_id = w.W_per_id AND k.datum = w.W_date"&_ 
" and k.namn_id = n.N_namn_id AND k.datum = n.N_datum"&_ 
" and k.namn_id = " & Id & " AND k.datum = #" & d & "#"
```

Permalänk: https://www.webforum.nu/p/860817

## #17 — Jesper T, 2002-11-19T22:16Z

Nej, nu visas posterna endast om alla uppfyller samma kriterier.
Weights kan stå enskilt, calender kan stå enskilt och notes kan stå enskilt.

Och i alla möjliga grupperingar.

weights, notes
notes,calender,weights
notes
calender,weights
calender
weights
osv...(Med risk för att bli övertydlig) .... ;)

Nu blir det ju(som är fel, fel, fel)

weight,calender,notes

(Det datumet hade alla matchande poster)

Permalänk: https://www.webforum.nu/p/860822

## #18 — LarsG, 2002-11-19T23:15Z

Med dom förutsättningarna kan du inte göra en join. 

Det ser mer ut som 3 olika frågor eller så kan du göra en union

```
select 'weight',weigth,'d' as notes ,datum from weight  
where datum = #d# and id = 22
union
select 'notes' , 1, notes, datum from notes
where datum = #d# and id = 22
union
select 'kalender' , 1, kalender, datum from kalender
where datum = #d# and id = 22
order by datum
```

Du måste ha samma antal kolumner i varje select och värdena måste vara kompatibla. (därför 'd' och 1)

Permalänk: https://www.webforum.nu/p/860844

## #19 — Jesper T, 2002-11-19T23:49Z

Oj, nu blev det mycket, men jag tror att vi är på rätt spår.
Är det prestandamässigt sämre att ha tre frågor i stället för unions?

Fattar inte riktigt vad 'd' och 1 gör.

Permalänk: https://www.webforum.nu/p/860864

## #20 — LarsG, 2002-11-19T23:59Z

Nej, i och med att du läser i tre olika tabeller så tror jag inte att det har så stor betydelse vilket du väljer. 

'd' och 1 är bara till för att de olika delfrågorna skall få  kolumner av samma typ

Det går inte att skriva en fråga som

```
  select integerKolumn from t1
  union
  select charKolumn from t2
```

Då kan man lägga till konstanter så att det blir jämförbara värden

```
  select 'd',integerKolumn from t1
  union
  select charKolumn,1 from t2
```

Konstanten 'd' är jämförbar med charkolumnen i den andra frågan och integerKolumn är jämförbar med 1 i den andra frågan.

Om du väljer en lösning med union så använd 

```
UNION ALL
```

det är effektivare eftersom union innebär att man tar bort dubletter vilket man inte gör med UNION ALL. För att ta bort dubletter så brukar man använda en temporärtabell vilket är rätt så kostsamt.

Permalänk: https://www.webforum.nu/p/860873

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/59380-missing-operator  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/59380-missing-operator/page2.md
