webForumDet fria alternativet

Värde på count(*)

.NET

11 svar · 396 visningar · startad av trexter

Medlem sedan mars 20021 889 inlägg
Frågan#1

Ursäkta om det är en dum fråga men om jag har ett objekt (OdbcCommand) och jag kör sql-satsen "select *, count(*) as count from nyheter group by nyheten" - var hamnar då värdet från count()? Hur kollar jag det?

Medlem sedan sep. 20011 914 inlägg
#2

Är det inte bättre att returnera huvudfrågan "select * from nyheter group by nyheten" och sen ge en utparameter värdet av "Select count(*) from nyheter".

Medlem sedan juni 200032 967 inlägg
#3

Count är inget bra namn på fält eller alias i SQL, så ta gärna något annat. ;)

Mvh

Medlem sedan mars 20021 889 inlägg
#4

Dino skrev:

Är det inte bättre att returnera huvudfrågan "select * from nyheter group by nyheten" och sen ge en utparameter värdet av "Select count(*) from nyheter".

Hur menar du och hur får jag fram värdet på Count?
@nders: ska ändra namnet när jag vet vad jag ska göra

Medlem sedan juni 200032 967 inlägg
#5

@nders: ska ändra namnet när jag vet vad jag ska göra

Trodde nästan det, men tänkte ändå slänga ur mig det i förbifarten. :)

mvh

Medlem sedan sep. 20011 914 inlägg
#6

Har bara använt det mot SQLServer och där med SPs så jag vet inte hur du gör mot MySQL eller vad det nu är du använder. Där ser det ut något så här.

SqlParameter par = new SqlParameter("@rows", SqlDbType.Int);
par.Direction = ParameterDirection.Output;
cmd.Parameters.Add(par);

SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
   while(dr.Read()) 
   {
      //
   }
dr.Close();

int rows = (int)par.Value;

och i spn

...
@rows OUTPUT
AS
NOCOUNT ON
SELECT * FROM nyheter GROUP BY nyheten
@rows = SELECT COUNT(*) FROM nyheter
--eller då i sqlserver '@rows = @@ROWCOUNT'
Medlem sedan mars 20021 889 inlägg
#7

Om någon kan visa likvärdig kod för mysql utan SP, vore jag glad. Är inte så haj på SP...

Medlem sedan dec. 20003 887 inlägg
#8

Kolla på ExecuteScalar. Den passar utmärkt när du endast vill ha ut en Count(*) eller liknande.

Medlem sedan sep. 20026 425 inlägg
Medlem sedan mars 20021 889 inlägg
#10

Tack. Undrar en sak. Jag använder

        object objResult = commID.ExecuteScalar();
        int intResult = (int)objResult;
        if (intResult % 2 == 0)
        {
            a.Text = "weeeee;";
        }

men får felet:
System.InvalidCastException: Specified cast is not valid.

:)

Medlem sedan mars 20021 889 inlägg
#11

Ok, använder

        Result = Convert.ToInt32(Result);
        if (Result % 2 == 0)
        {
            possible_tr.Text = "weeeee";
        }

nu men tydligen får man inte använda integers som operander till %?! :q

Medlem sedan mars 20021 889 inlägg
#12

löst med (int)

260 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)