Du gör två fel.
Det första är att du frågar om SQL i ASP-forumet, och det andra är att du använder INNER JOIN. Byt till LEFT JOIN istället.
8 svar · 481 visningar · startad av Tonyboy
Hej!
Jag har en SQL-sats där jag förutom att visa nyheter(tblNews) även visar antalet kommentarer(tblKommentera) till respektive nyhet. Problemet är att den bara visar nyheter som har kommentarer.
Kan någon se vad jag gör för fel?
strSQL ="SELECT ID, Rubrik, Ingress, Innehall, Bild, Datum, Status, Dateact, COUNT(*) AS antal " & _
"FROM tblNews " & _
"INNER JOIN tblKommentera ON tblNews.ID = tblKommentera.CmtTo " & _
"WHERE Status=2 AND CURRENT_DATE >= Dateact " & _
"GROUP BY tblNews.ID " & _
"ORDER BY Datum DESC"
Du gör två fel.
Det första är att du frågar om SQL i ASP-forumet, och det andra är att du använder INNER JOIN. Byt till LEFT JOIN istället.
Flyttas från ASP
Förlåt att jag råkada posta i fel forum och TACK för hjälpen :)
Dock blir sidan väldigt seg när jag kör en INNER JOIN. Vad kan detta bero på?
Förlåt att jag råkada posta i fel forum
Alla får göra misstag. :)
Jag har också märkt att INNER JOIN suger mer än LEFT JOIN, men varför vet jag icke...
(Fast nu blev det väl en left join i alla fall?)
Jag har ca 1500 poster i tabellen med kommentarer och ca 200 poster i nyheter. Är detta tillräckligt för att en LEFT JOIN tar så oerhört mycket längre tid? När jag testar med INNER JOIN är det knappt någon prestandasäkning alls.
Jag tyckte du skrev att INNER JOIN tar längre tid? Vad menar du alltså?
LEFT JOIN på min fråga tar väääldigt lång tid medan INNER JOIN inte ger någon märkbar skillnad i prestanda.
Exempel:
INNER JOIN: http://gnrdaily.com/
LEFT JOIN: http://http://www.gnrdaily.com/test.asp