Avatar billede tjgrindsted Nybegynder
12. april 2007 - 22:43 Der er 12 kommentarer og
1 løsning

underligt problem med SQL linje

Hej

Jeg har haft en del bøvl med en SQL linje de sidste par dage.

Jeg har PT denne linje i en Reader:
ObjCmd = New OleDbCommand("SELECT DogImageTitle, DogImageDate FROM EnggaardImages ORDER BY DogImageDate DESC;", ObjConn)

Den virker fint og flg. bliver udskrevet:
Fælles Billede
Fælles Billede
Fælles Billede
Fælles Billede
Fælles Billede
Fælles Billede
2. Søndag
Efterår 2006

Men laver jeg min linje om så jeg har GROUP BY DogImageTitle med som flg:
        ObjCmd = New OleDbCommand("SELECT DogImageTitle, DogImageDate FROM EnggaardImages GROUP BY DogImageTitle ORDER BY DogImageDate DESC;", ObjConn)

Så ville jeg forvente at den udskrev dette:
Fælles Billede
2. Søndag
Efterår 2006

Men intet bliver udskrevet...hvad er problemet !?.
Avatar billede softspot Forsker
12. april 2007 - 22:52 #1
Hvad er det du vil opnå?
Avatar billede erikjacobsen Ekspert
12. april 2007 - 22:58 #2
Du kan i SQL ikke bruge et feltnavn, DogImageDate, som ikke indgår i din GROUP BY, med mindre den anvendes i en aggragat funktion (dvs i nogle sql-varianter kan man godt, selv om det ikke giver mening, fx i MySql).
Avatar billede tjgrindsted Nybegynder
12. april 2007 - 23:15 #3
Hej

@SoftSpot
Jeg vil lave en liste over de titler der er i min database nogle af den kan være ens som du kan se på mit første udtræk, derefter vil jeg så counte den og skrive tallet bagved så hvis man kigger på min kode nu så får jeg dette:

Fælles Billede
Fælles Billede
Fælles Billede
Fælles Billede
Fælles Billede
Fælles Billede
2. Søndag
Efterår 2006

Men jeg vil gerne have dette
Fælles Billede (6)
2. Søndag      (1)
Efterår 2006  (1)



@Erikjacobsen
Jeg bruger MS Access database, men beklager hvis jeg gav indtryk af noget andet mente bare med SQL at det var min Select linje


Hele min kode NU er flg. og den virker MEN ikke med Group BY og Count.
(Bemærk at både DogImageDate og DogImageTitle er det samme altså for evt. "Fælles Billede" osv. så kan evt. GROUP BY DogImageDate hvis det er).

    ' Database Conn 7 Åben DB
    Public Sub OpenDB()
        Dim ObjConn As OleDbConnection
        Dim ObjCmd As OleDbCommand
        Dim ObjReader As OleDbDataReader
        Dim ConnectionString As String = ConfigurationManager.ConnectionStrings("ConnectionStringDogs").ConnectionString
        ObjConn = New OleDbConnection(ConnectionString)
        ObjCmd = New OleDbCommand("SELECT DogImageTitle, DogImageDate FROM EnggaardImages ORDER BY DogImageDate DESC;", ObjConn)

       
        Try
            ObjConn.Open()
            ObjReader = ObjCmd.ExecuteReader(CommandBehavior.CloseConnection)
           
            If ObjReader.HasRows() Then
                Do While ObjReader.Read()
                    Response.Write(ObjReader("DogImageTitle"))
                    Response.Write("<br />")
                Loop
            Else
               
                Response.Write("Ingen Data i databasen")
            End If

        Catch ex As Exception
            Console.WriteLine(ex.Message)

        Finally
           
            If Not ObjReader Is Nothing Then
                ObjReader.Dispose()
            End If
            If Not ObjConn Is Nothing Then
                ObjConn.Dispose()
            End If

        End Try
    End Sub
Avatar billede erikjacobsen Ekspert
12. april 2007 - 23:18 #4
Virker ikke på hvilken måde? Får du en fejl/exception? Hvor læser du det der skrives ude med Console.WriteLine(ex.Message) ?
Avatar billede softspot Forsker
12. april 2007 - 23:19 #5
Hvad med:

        ObjCmd = New OleDbCommand("SELECT DogImageTitle, DogImageDate, COUNT(*) AS antal FROM EnggaardImages GROUP BY DogImageTitle, DogImageDate ORDER BY DogImageDate DESC;", ObjConn)
Avatar billede tjgrindsted Nybegynder
12. april 2007 - 23:50 #6
@Erik

Ingen fejl den vil bare ikke vise data. når jeg sætter det GROUP BY ind.



@SoftSpot

JA DA, kan du sige mig hvad jeg gjorder forkert i rækkefølgen !?
Avatar billede erikjacobsen Ekspert
12. april 2007 - 23:51 #7
"Ingen fejl" - det er jo nok den udskrift, du aldrig ser. Du kunne erstatte den med response.write. Og fejlen var den som jeg skrev 22:58:26
Avatar billede tjgrindsted Nybegynder
12. april 2007 - 23:58 #8
@Erik

Okay, det viste jeg ikke lige, at det var det du mente.


Jeg fatter bare ikke at der KUN skal så lidt til så det bare driller, men det virker som det skal nu, ville se om jeg ikke godt kunne klare den fejl selv, selvom man er ny i .NET, det er jo den eneste måde at lære på det er ved at begå fejl og så lære af dem. :)

1000 tak til jeg begge for hurtig Respons.

Vil i ikke begge, eller nej forresten Erik mener du er en af den der hjælper for at glæde andre, men hvis du stadigvæk ikke vil have Point så kan du SoftSpot vel lige smide et svar.
Avatar billede erikjacobsen Ekspert
13. april 2007 - 00:01 #9
Ingen point til mig, tak. Men husk at få udskrevet fejlbeskeder - det er hjælp til selvhjælp.
Avatar billede softspot Forsker
13. april 2007 - 00:01 #10
Kommer her :)

Såvidt jeg kan se, manglede du at lave en sammentælling (dvs. COUNT(*)), som er den aggregat-funktion erik snakker om. Det er ved aggregat-funktioner du bruger GROUP BY - såvidt jeg ved... :)
Avatar billede tjgrindsted Nybegynder
13. april 2007 - 00:13 #11
@ Erik
Ja men når jeg kørte siden i VS2005 så kom siden bare frem, den skrev ikke en fejl besked, og lavede jeg en debug så kørte den bare igennem uden at stoppe.


Igen Takker jeg begge.
Avatar billede tjgrindsted Nybegynder
13. april 2007 - 00:20 #12
Ej hvor lækkert i er bare guder så fik jeg endelig min linje til at virke også:

ObjCmd7 = New OleDbCommand("SELECT DogImageTitle, DogImageDate, COUNT(*) AS antal FROM EnggaardImages WHERE DogImageDate NOT IN (SELECT TOP 1 DogImageDate FROM EnggaardImages ORDER BY DogImageDate DESC) GROUP BY DogImageTitle, DogImageDate ORDER BY DogImageDate DESC;", ObjConn7)
Avatar billede softspot Forsker
13. april 2007 - 01:03 #13
Velbekomme - og tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester