Denna sql fråga fungerar inte riktigt med MS Access. Vad har blogtext för typ? Jag tror att du måste använda typen PM om du vill få plats med jättemycket text i Access. PM är obegränsad (?). Jag har PM som fälttyp för blogtext. Testa att lägga bloggtexten sist i frågan. Har för mig att det har något att göra med hur JET cachar MEMO/PM fält: Varför gör du en subquery i joinen? behöver man verkligen göra det, för frågan fungerar utan problem <b>Varför gör du en subquery i joinen? behöver man verkligen göra det, för frågan fungerar utan problem <b>Jag kan spekulera i att ersätta underfrågan med en vy i SQL server eller liknade bör göra min lösning snabbare. Om den är snabbare än din sista fråga återstår dock att se.</b> En query i access och en vy skiljer sig åt. Jag tror man kan jämföra hur en vy med en temporärtabell, som uppdateras när underliggande data förändras. SQL fråga som inte fungerar som tänkt
När jag skriver ut blogtext på skärmen så kapar den utskriften med hälften ungefär.
När jag använder mysql så fungerar det utan problem.SELECT blog_id,headline,blogtext,created,COUNT(comment_id) AS comments
FROM t_blog tb LEFT JOIN t_comments tc ON (tb.blog_id=tc.fk_blog_id)
GROUP BY blog_id,headline,blogtext,created ORDER BY created DESC
Så jag undrar om det är någon bugg i Ms Access som gör så texten kapas av.
Sv: SQL fråga som inte fungerar som tänkt
Sv:SQL fråga som inte fungerar som tänkt
Denna sql fråga fungerar utmärkt och skriver ut hela blogtext. men då måste jag göra en funktion
för att hämta ut hur många kommentarer det finns för varje post. Det är något som jag vill undervika.
Blir onödigt mycket trafik mot databasen.SELECT blogtext FROM t_blog
Sv: SQL fråga som inte fungerar som tänkt
SELECT tb.blog_id, tb.headline, tb.created, tc.comments, tb.blogtext
FROM t_blog tb LEFT JOIN
(SELECT blog_id, COUNT(comment_id) AS comments
FROM t_comments
GROUP BY blog_id) tc ON (tb.blog_id=tc.fk_blog_id)
ORDER BY tb.created DESC
Tog mig friheten att "snygga" till din fråga.
Tänk på att bara läsa ett MEMO fält en gång:
Const MaxLength = 100
BloggText = rs("blogtext")
If Len(BloggText) > MaxLength Then
BloggText = Left(BloggText, MaxLength) & "..."
End If
Sv:SQL fråga som inte fungerar som tänkt
med MySQL 5.
Sen vad menar du med att läsa blogtext en gång?
Jag ska loopa igenom databasen och skriva ut hela blogtexten på sidan.
Testade din fråga men den fungerade dåligt.
Skrev om frågan så här, och den fungerar bra.
SELECT
headline,
blogtext,
created,
(SELECT COUNT(comment_id)
FROM t_comments
WHERE fk_blog_id=blog_id
GROUP BY fk_blog_id) AS comments
FROM t_blog
ORDER BY created DESC;
Sv: SQL fråga som inte fungerar som tänkt
med MySQL 5.</b>
Att slå samman bloggar och kommentarer meed en join och gruppera resultatet på fler kolumner än nödvändigt för att räkna kommentarer är inte effektivt. Min fråga var ett exemple på hur man kunde göra detta alternativt.
Men då jag testade i access gav din senaste fråga bättre resultat:
Din första fråga: 2,585938
Min fråga: 1,28125
Din sista fråga: 0,5
Jag kan spekulera i att ersätta underfrågan med en vy i SQL server eller liknade bör göra min lösning snabbare. Om den är snabbare än din sista fråga återstår dock att se.
<b>Sen vad menar du med att läsa blogtext en gång?
Jag ska loopa igenom databasen och skriva ut hela blogtexten på sidan.</b>
JAg har tidigare varit med om att Jet/Access "tappar" värdet för MEMO fält. Detta tror jag beror på att optimering vilket frigör värdet efter att det läst första gången eller så var det en bug. Kan rent av varit att det tillhörde DAO och inte ADO.
<b>Testade din fråga men den fungerade dåligt.</b>
Vad avser du med dåligt? Sämre prestanda?Sv:SQL fråga som inte fungerar som tänkt
Skulle jag också göra.
Antar att Query i Ms Access är motsvarigheten till Vy i MySQL 5.
<b>Vad avser du med dåligt? Sämre prestanda?</b>
Fick inte den att fungera. Kom på att jag gjort lite fel.
Vad jag vill få ut av sql frågan var antalet kommentarer till varje blogginlägg.Sv: SQL fråga som inte fungerar som tänkt
Detta ger bättre prestanda då du troligen har betydligt fler läs-operationer än skriv-operationer.
Men som sagt, jag har haft fel tidigare. Så jag uppskattar om någon SQL-server expert kompleterar eller korrigerar vid behov. ;)