18. august 2008 - 21:27
Der er
28 kommentarer og 1 løsning
LONGTEXT i SELECT med LOOP og ORDER BY?
Hej, Jeg er ved at prøve, at lave en Blog. Databasens felter: ID(SMALLINT) Headline(VARCHAR) Content(LONGTEXT) Created(DATETIME) AuthorID(SMALLINT) Admin (TINYINT) På selve siden har jeg lavet et loop If NOT rs.EOF Then Do While NOT rs.EOF O.s.v. Jeg har prøvet at skrive: SELECT b.ID, b.Headline, b.Created, b.AuthorID, b.Content FROM blogs b WHERE b.Admin=0 ORDER BY Created DESC LIMIT 0, 2; Men der kommer ikke noget resultat, selvom blogs indeholder 2 rækker. Men det gør jeg af en eller anden grund IKKE, p.g.a. at jeg tager Content med. Hvis jeg skriver: SELECT b.ID, b.Headline, b.Created, b.AuthorID FROM blogs b WHERE b.Admin=0 ORDER BY Created DESC LIMIT 0, 2; Så får jeg de 2 resultater frem, jeg har oprettet. Jeg vil gerne have "Content" med... Hvis jeg fjerner "ORDER BY Created DESC" så kommer der resultater ud. SELECT b.ID, b.Headline, b.Created, b.AuthorID, b.Content FROM blogs b WHERE b.Admin=0 LIMIT 0, 2; Men hvorfor kan man ikke tage feltet med samtidigt med at man sorterer med Created? Har også testet dem i MySQL Query Browser. mvh Lifeenergy
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
18. august 2008 - 21:39
#1
Prøv dette: tag din oprindelige SELECT b.ID, b.Headline, b.Created, b.AuthorID, b.Content FROM blogs b WHERE b.Admin=0 ORDER BY Created DESC LIMIT 0, 2; og øverst i din whileløkke tager du felterne ud i samme rækkefølge som de står i sql-sætningen, og lægger dem i variabler: id=... headline=... created=... ...osv. og så bruger du variablerne, når du skriver ud. Hvis det virker får du en forklaring senere... :)
18. august 2008 - 21:51
#2
Hvis du udskriver evt. fejlmeddelser, saa vil du faa et hint til hvad problemet er.
18. august 2008 - 21:56
#3
Mener du sådan? Do While NOT rs.EOF NumGetBlogID = rs("ID") strGetHeadline = rs("Headline") strGetCreated rs("Created") strGetContent = rs("Content") Det er sådan jeg har gjort. Den siger rs.EOF, når jeg både tager "Content" og "ORDER BY" med. Men det passer jo ikke, for der er poster.
18. august 2008 - 22:09
#4
Ok. Hvilken mysql version og hvilken tabeltype (myisam, innodb,...)?
18. august 2008 - 22:10
#5
Brug af LONGTEXT antyder vaerdier > 24 MB. Jeg gaetter paa at din MySQL og/eller driver ikke er konfigureret til at kunne klare sorteringer af saa lange raekker. Men en praecis fejl besked kunne af eller bekraefte den hypotese.
18. august 2008 - 22:13
#6
Jeg har hørt at MyISAM skulle passe godt til formålet. Det er den sat til. jeg kører ODBC 5.1 MySql server 6.0
18. august 2008 - 22:17
#7
Jeg ved ikke så meget om hvad der kan bruges til at hente meget tekst. Jeg har også en database med stories i. Beregnet til længere historier. Hvad kan være godt at bruge, når det fylder mere.?
18. august 2008 - 22:19
#8
Mysql drivere til "ASP" er ikke nødvendigvis supergode. Men du siger der også er problemer, når du afvikler direkte i mysql query browser? Jeg kan ikke genskabe dit problem.
18. august 2008 - 22:20
#9
Men jeg har heller ikke fyldt så meget i content-feltet. Hvor meget har du?
18. august 2008 - 22:21
#10
Den viser nøjagtigt det samme i MySql browser som på siden.
18. august 2008 - 22:31
#11
Men jeg ville nok prøve at oprette tabellen som InnoDB, med samme indhold selvfølgelig. InnoDB er en mere moden tabeltype.
18. august 2008 - 22:32
#12
SELECT b.ID, b.Headline, b.Created, b.AuthorID, b.Content FROM blogs b WHERE b.Admin=0 ORDER BY Created DESC LIMIT 0, 2; 0 rows fetched in 0,0020s(0,0013s) Fjerner jeg WHERE clause SELECT b.ID, b.Headline, b.Created, b.AuthorID, b.Content FROM blogs b ORDER BY Created DESC LIMIT 0, 2; Kommer der 2 rækker frem...
18. august 2008 - 22:37
#13
SELECT b.ID, b.Headline, b.Created, b.AuthorID, b.Content FROM blogs b WHERE AuthorID=1 ORDER BY Created DESC LIMIT 0, 2; Nu virker det! Jeg ændrede blot til InnoDB for selve tabellen. Hvad er egentlig forskellen på disse tabeltyper? Findes der andre datatyper der er bedre at bruge end LONGTEXT? Måske kunne MEDIUMTEXT bruges?
18. august 2008 - 22:43
#14
TEXT - op til 64 KB MEDIUMTEXT - op til 16 MB (jeg skrev vist 24 laengere oppe men det er forkert) LONGTEXT - op til 2 GB
18. august 2008 - 22:54
#15
Du skrev "LONGTEXT antyder værdier > 24 MB" Så kan det være at jeg kan klare mig med MEDIUMTEXT - eller TEXT. Hvor meget mon fylder en side tekst inkl. mellemrum og linjeskift?
18. august 2008 - 23:10
#16
Det kommer an på størrelsen ;) Men den side du sidder og kigger på lige nu er på ca. 22 kB.
18. august 2008 - 23:22
#17
Jeg tror jeg vælger MEDIUMTEXT - det må være rigeligt til mit site.
18. august 2008 - 23:26
#18
Hvis jeg kigger på et Word dokument, er det nok rigeligt at regne med omkring 4000 tegn inkl. mellemrum og linjeskift pr. side.
19. august 2008 - 03:21
#19
Et Word dokument skal i BLOB/MEDIUMBLOB/LONGBLOB. Og husk at et Word dokument med billeder eller lignende kan blive meget stort.
19. august 2008 - 14:14
#20
Jeg har ikke planer om at indsætte selve word -dokumentet. Jeg brugte det til at se hvor mange tegn der typisk er på en side. Hvis vi taler om omkring 4000 tegn, så er spørgsmålet hvor meget 4000 tegn af tekst med mellemrum og linjeskift fylder i MB.
19. august 2008 - 14:21
#21
Det fylder ca. 4 kByte, altså ca. 0.4 MByte.
19. august 2008 - 14:22
#22
Eh. 0.004 MByte :)
19. august 2008 - 14:36
#23
Ok så kan man måske nøjes med at benytte datatypen TEXT:)
19. august 2008 - 15:48
#24
Tak for alt hjælpen. Du har ikke evt. et link, hvor jeg kan læse mere om tabeltyper m.v?
19. august 2008 - 15:57
#25
19. august 2008 - 16:24
#27
Ok, smid et svar:)
19. august 2008 - 17:22
#28
Ingen point til mig, tak.
20. august 2008 - 16:52
#29
Ok... Jeg lukker spm.
Computerworld tilbyder specialiserede kurser i database-management