Tanken är att jag skall loopa ut händelser ifrån en kolumn som heter "W_weight" men skriver jag min sql-sats så visas inga händelser ifrån den tabellen: Du kan ju försöka med: Då står det: Syntax error in JOIN operation :-( Opps... ;o) Nu ändrade jag till detta: 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. Vill du även få ut poster från notes om det saknas värden för Calendar och Weight? Ja, jag vill 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. ÄR det så att alla Weight post skall visas och eventuella Notes och Tandläkaren poster. Eller kan det vara datum utan Weight poster? Citat: Weights kan stå enskilt, calender kan stå enskilt och notes kan stå enskilt. Jag har nu förstått att man måste göra en union på något vis, men jag vet inte vad som är smartast när jag har så många tabeller som jag har. Men om jag lägger till flera tabeller då? modifiera frågan så du använder: LEFT OUTER JOIN i stället. Om jag har förståt det rätt saknas det en huvudtabell. Det kan finnas poster för ett datum i olika kombinationer i det olika tabellerna. Det är det som är problemet. Andreas: Rätt tänkt, finns det något jag kan göra åt det?Inget syns[Avslutad]
<code>
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 & "#"
</code>
Men skriver jag däremot endast:
<code>
sql="select * from weight where W_per_id = " & Id & " AND W_date = #" & d & "#"
</code>
Då funkar det!
Hur skall jag formulera sql-satsen för att det skall bli rätt?Sv: Inget syns[Inte Löst]
sql = "SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight" & vbCrLf & _
"FROM (Weight w LEFT JOIN" & vbCrLf & _
" Calendar k ON (w.W_per_id = k.namn_id AND w.W_date = k.datum) 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 & "#" Sv: Inget syns[Inte Löst]
Det saknas en parantes någonstans ocksåSv: Inget syns[Inte Löst]
Tagit bort en felaktig parantes:
sql = "SELECT n.N_datum, n.N_Id, k.Frukt_id, n.N_namn_id, w.W_weight" & vbCrLf & _
"FROM (Weight w LEFT JOIN" & vbCrLf & _
" Calendar k ON w.W_per_id = k.namn_id AND w.W_date = k.datum) 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 & "#" Sv: Inget syns[Inte Löst]
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 någon annan tabell med samma datum.
Men inte om det endast är en post på ett visst datum i weight-tabellen.
Konstigt!Sv: Inget syns[Inte Löst]
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?Sv: Inget syns[Inte Löst]
SQL = "SELECT n.Notes,n.N_datum,n.N_Id, k.Frukt_id, n.N_namn_id,w.W_weight" & vbCrLf & _
" FROM (Calendar k INNER 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 & "#"Sv: Inget syns[Inte Löst]
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.
Har lite svårt att besrkiva, men ni kanske förstår?!
MVH JeppeTSv: Inget syns[Inte Löst]
SQL = "SELECT n.Notes,n.N_datum,n.N_Id, k.Frukt_id, n.N_namn_id,w.W_weight" & vbCrLf & _
"FROM (Weight w LEFT JOIN" & vbCrLf & _
" Calendar k ON w.W_per_id = k.namn_id AND w.W_date = k.datum) LEFT JOIN" & vbCrLf & _
" notes n ON k.namn_id = n.N_namn_id AND k.datum = n.N_datum" & vbCrLf & _
" WHERE w.W_per_id = " & Id & " AND w.W_date = #" & d & "#"
Eftersom du bara hämtar ut värden för ett datum. Kan det vara enklare att ställa tre fråger iställe. En för varje tabell. Helst om det är så att det saknas en central tabell.Sv: Inget syns[Inte Löst]
-"ÄR det så att alla Weight post skall visas och eventuella Notes och Tandläkaren poster. Eller kan det vara datum utan Weight poster?
"
Ja, alla poster skall kunna visas oavsätt om det är någon annan händelse på aktuellt datum.
Vad menar du med central tabell?
Ett datum är det inte heller riktigt, för att recsetet ligger i en loop som loopas ut i en veckokalender.Sv: Inget syns[Inte Löst]
Och i alla möjliga grupperingar.
weights, notes
notes,calender,weights
notes
calender,weights
calender
weights
osv...(för att inte vara otydlig) .... ;-)Sv: Inget syns[Inte Löst]
Antingen unions eller så gör jag flera frågor.
Gör jag flera frågor så kommer det att bli ca 6 stycken för att det kommer att bli flera tabeller än de jag har nämt i tidigare inlägg.
MVH JesperSv: Inget syns[Inte Löst]
Eventuellt så behöver jag 6 tabeller, kommer det inte att sacka ner mycket då?
Hur blir loopen?
while rs.eof or rs2.eof or rs3.eof
'Det som skall loopas
rs.movenext
rs2.movenext
rs3.movenext
wend
eller
while rs.eof
while rs2.eof
while rs3.eof
'Det som skall loopas
wend
wend
wend
eller hur gör man detta?Sv: du letar efter OUTER JOIN, tror jag!
Nu kommer alla poster från "huvudtabellen" med (den vänstra/första tabellen i sql-frågan).
Om det saknas relaterade poster kommer de fälten från de tabellerna att innehålla NULL (i stället för att posterna inte kommer med alls).
/OlaSv: du letar efter OUTER JOIN, tror jag!
Sv: du letar efter OUTER JOIN, tror jag!