/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL udtræk som driller
Fra : Thomas Løjmann Jørge~


Dato : 09-09-04 16:30

Hej,

Jeg har en tabel som indeholder en masse data, det mest vigtige i
denne sag er flg;

ip, hostname, javascript, id

data kunne være

10.10.10.10, delta, 1, 33
10.10.10.10, delta, 1, 34
10.10.10.10, delta, 1, 35
247.42.154.77, gamma, 0, 36
40.45.77.120, nisse, 1, 37
247.42.154.77, gamma, 0, 38
247.42.154.77, gamma, 0, 39
40.45.77.120, nisse, 1, 40
40.45.77.120, nisse, 1, 41
10.10.10.10, delta, 1, 42

osv...

Det jeg skal, det er jeg skal bruge antal unikke brugere som hhv. har
0 og 1 i javascript feltet. Den skal bruge IP feltet til at sorter så
en IP kun bliver talt med en gang.

Resultater af dataen ovenfor skulle gerne blive

javascript 0 = 1
javascript 1 = 2

Det SQL jeg har skrevet er flg;

SELECT DISTINCT ip, javascript, COUNT(id) AS antal
FROM infostatic
GROUP BY javascript
ORDER BY javascript DESC

men den tæller alle rækker med, dvs. den tager den samme IP med flere
gange og det skal den ikke - nogle som kan hjælpe med at skrive et sql
statement der virker?

/Thomas

 
 
Jan Bachman (09-09-2004)
Kommentar
Fra : Jan Bachman


Dato : 09-09-04 17:15

>Resultater af dataen ovenfor skulle gerne blive
>
>javascript 0 = 1
>javascript 1 = 2

Måske noget i stil med dette:

select nest.javascript, count(nest.javascript) as antal
from (select distinct ip, javascript from infostatic) as nest
group by nest.javascript
order by nest.javascript desc

/Jan

Thomas Løjmann Jørge~ (09-09-2004)
Kommentar
Fra : Thomas Løjmann Jørge~


Dato : 09-09-04 22:22

On Thu, 09 Sep 2004 18:15:02 +0200, Jan Bachman <jamen@davs.du> wrote:

Tak for svaret, dog kommer den med en fejl...

You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'select distinct ip, javascript from infostatic) as nest

Nogle ide?

/Thomas

Jan Bachman (09-09-2004)
Kommentar
Fra : Jan Bachman


Dato : 09-09-04 23:08

>You have an error in your SQL syntax. Check the manual that
>corresponds to your MySQL server version for the right syntax to use
>near 'select distinct ip, javascript from infostatic) as nest
>
>Nogle ide?

Så vidt jeg ved er nested SQL først rigtig implementeret i MySQL 4.1.
Kører du en ældre?

/Jan

Thomas Løjmann Jørge~ (09-09-2004)
Kommentar
Fra : Thomas Løjmann Jørge~


Dato : 09-09-04 23:19

On Fri, 10 Sep 2004 00:07:31 +0200, Jan Bachman <jamen@davs.du> wrote:


>Så vidt jeg ved er nested SQL først rigtig implementeret i MySQL 4.1.
>Kører du en ældre?
>

Det er en 4.0.20 jeg har... Hmm... kunne jo opgarder den - det tænker
jeg lige over, men er stadig interesseret i en løsnign der virker på
min nuværende version...

/T

Jan Bachman (10-09-2004)
Kommentar
Fra : Jan Bachman


Dato : 10-09-04 06:14

>Det er en 4.0.20 jeg har... Hmm... kunne jo opgarder den - det tænker
>jeg lige over, men er stadig interesseret i en løsnign der virker på
>min nuværende version...

Du kan jo bryde mit forslag op i to trin, og smide det nestede i en
temp-tabel, og derefter counte på den. Så er vi ude over nesting.

Noget i stil med dette:

create temporary table T (
ip varchar(50) not null,
js int not null,
primary key (ip,js)
)type=innodb

insert into T (ip,js)
select distinct jp,javascript as js
from infostatic;

select js, count(js) as antal
from T
group by js
order by js desc;

/Jan

Jesper Juul-Mortense~ (10-09-2004)
Kommentar
Fra : Jesper Juul-Mortense~


Dato : 10-09-04 15:15

On Thu, 09 Sep 2004 17:29:55 +0200, Thomas Løjmann Jørgensen
<lojmann@lojmann.dk> wrote:

>nogle som kan hjælpe med at skrive et sql statement der virker?

Var det dette resultat du var ude efter?

SELECT DISTINCT javascript, COUNT(DISTINCT ip) AS antal FROM
infostatic GROUP BY javascript

/Jesper

Thomas Løjmann Jørge~ (13-09-2004)
Kommentar
Fra : Thomas Løjmann Jørge~


Dato : 13-09-04 19:30

On Fri, 10 Sep 2004 16:14:39 +0200, Jesper Juul-Mortensen
<na@na.invalid> wrote:

>Var det dette resultat du var ude efter?
>
>SELECT DISTINCT javascript, COUNT(DISTINCT ip) AS antal FROM
>infostatic GROUP BY javascript

Hej Jesper,

Den virkede ikke for mig, der kom bare et resultat med 100% og en med
0% - men stærkt inspireret af det, fik jeg denne her tygget sammen som
virker for mig.

SELECT DISTINCT ip, COUNT(DISTINCT ip) AS antal FROM
infostatic GROUP BY JavaScript ORDER BY JavaScript ASC

Jeg har forsøgt at regne den efter og det ser ud til at vi er helt
enige om resultatet :)

1000 tak for hjælpen!

/Thomas

Søg
Reklame
Statistik
Spørgsmål : 177460
Tips : 31964
Nyheder : 719565
Indlæg : 6408201
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste