Avatar billede jalaboo Nybegynder
24. april 2001 - 09:58 Der er 20 kommentarer og
1 løsning

GROUP BY, som sikkert ikke kan lade sig gøre !?

Jeg har en tabel (\"messageboard\") som ser således ud :

id        int(10) 
msg_id      int(10) 
topic          varchar(255)
name          varchar(255)
email          varchar(255)
msg          text   
timestamp      int(10)

Det er til et messageboard. \"id\" er unik for hver besked. \"msg_id\" er den id man skriver et svar til.

Det jeg ønsker er en SELECT der henter rækker hvor \"msg_id\" er 0, og henter antallet af rækker, hvor msg_id = id.

Jeg har forsøgt med \"SELECT id, topic, timestamp, COUNT(*) FROM messageboard GROUP BY msg_id\"
Avatar billede erikjacobsen Ekspert
24. april 2001 - 10:12 #1
kan du komme med et eksempel, med rigtige værdier ?
Avatar billede kmal Nybegynder
24. april 2001 - 10:12 #2
Til at starte med skal du udvælge msg_id i din select
Avatar billede jalaboo Nybegynder
24. april 2001 - 10:22 #3
Her er data :

2. kolonne er en ny række, som er ligegyldig i denne sammenhæng.

1;1;0;You are the sunshine of my life...;Benny;Benny@nono.dk;You are the sunshine of my life...;988037796;;
2;1;0;en test;Benny;Benny@nono.dk;en test;988096569;;
3;1;1;en etest;Benny;Benny@nono.dk;en etest;988096602;;
4;1;3;ogbtest;Benny;Benny@nono.dk;ogbtest;988096665;;
5;1;1;babu;Benny;Benny@nono.dk;babu;988096696;;
6;1;3;boo;Benny;Benny@nono.dk;boo;988097947;;

kmal: Kan du give et eksempel ?
Avatar billede erikjacobsen Ekspert
24. april 2001 - 10:24 #4
Hvad skal svaret så være med de data?
Avatar billede naesbygaard Nybegynder
24. april 2001 - 10:29 #5
hvad med noget med:
\"Select *, count(msg_id) as antal from messageboard where msg_id = id and id = 0 order by timestamp group by by msg_id,id\"


/NbG

:) - Et skyd i tågen (hvor det vist er meget mørkt)

Avatar billede jalaboo Nybegynder
24. april 2001 - 10:35 #6
Svaret skal være :

You are the sunshine of my life... (2)
en test (0)
en etest (2)

Jeg må så erkende at id:3 burde have 3. kolonne værende 0. Det skyldes en fejl jeg har rettet.
Avatar billede erikjacobsen Ekspert
24. april 2001 - 10:40 #7
select m1.topic as topic,count(m2.id)a s antal  from messageboard as m1,messageboard as m2 where m1.msg_id=0 and m1.id=m2.msg_id group by m1.id

vistnok - utestet
Avatar billede erikjacobsen Ekspert
24. april 2001 - 10:41 #8
count(m2.id) as antal
Avatar billede erikjacobsen Ekspert
24. april 2001 - 10:41 #9
næh - dem med 0 kommer jo ikke ud...
Avatar billede jalaboo Nybegynder
24. april 2001 - 10:55 #10
Kan det lade sig gøre ?  :)
Avatar billede erikjacobsen Ekspert
24. april 2001 - 11:30 #11
Jo jo, tag det roligt - vi har også andre ting der skal laves :)

select m1.topic as topic, count(m2.msg_id) as antal, max(m1.msg_id) as t from mess as m1 left join mess as m2 on m1.id=m2.msg_id group by m1.id having t=0

mess er tabellen. Det virker i MysQl - og du skal bare ignorere feltet t, og kun
bruge topic og antal
Avatar billede jalaboo Nybegynder
24. april 2001 - 11:44 #12
Hvor har du dog lært det henne ?
Avatar billede alvion Nybegynder
24. april 2001 - 11:50 #13
Manden er datalog og underviser på datamatiker udd. Så skal man vide sådan noget :-)
Avatar billede alvion Nybegynder
24. april 2001 - 11:51 #14
erikjakobsen -> Hvor længe har du egentlig været på EDB-skolen i Århus?
Avatar billede erikjacobsen Ekspert
24. april 2001 - 11:58 #15
Øh, alvion, en 6-7 år tror jeg nok. Hvis det er mig du spørger :)

Jaaah, det er nu ikke mange datamatikere der vil kunne lave den sætning,
endsige forklare hvad den gør :)

Man kunne overveje om kompleksiteten af forespørgslen måske ville
retfærdiggøre en omstrukturering af databasen. Måske kan det blive simplere
med 2 tabeller (oplæg og svar) - men jeg har ikke lige gennemtænkt det.
Avatar billede limemedia Nybegynder
24. april 2001 - 12:07 #16
erik >> *g* så kommer diskussionen senere med om en left join i mySQL ikke svarer til to sql opslag. og én datamatiker kan godt forklare hvad der sker i den query
Avatar billede erikjacobsen Ekspert
24. april 2001 - 12:12 #17
Du er på mange måder et unikum, ljweb. Men dem, der kommer ud af vores
datamatikermaskine har ikke direkte lært det. Så længe det sker
på serveren er jeg ganske tryg ved at den nok skal tygge forespørgslen igennem,
og gøre det bedst muligt. Er der mange indlæg vil et index på msg_id naturligvis
være et foretrække.
Avatar billede limemedia Nybegynder
24. april 2001 - 12:19 #18
erik >> *g* en datamatiker er en fed generalist uddannelse, men krævere viderebygning m.v.
Avatar billede alvion Nybegynder
24. april 2001 - 14:02 #19
erikjakobsen >> Så er der da sket noget trist med Århus EDB-skole. Jeg husker engang, hvor den blev regnet for landets bedste datamatiker udd. (selvfølgelig da jeg gik der... ;-)

Er Jens Bennedsen der forresten endnu? Et af mine store idoler.
Avatar billede kong7 Nybegynder
24. april 2001 - 14:04 #20
Hvad går det her ud på..*S*
Avatar billede erikjacobsen Ekspert
24. april 2001 - 14:12 #21
Den er sandelig den bedste :) Men dækningen af forskelllige emneområder ændrer
sig jo lidt over tiden, og superekspert i komplekse SQL-forespørgsler bliver man
ikke nødvenigvis. JBB er der stadig.
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
Computerworld tilbyder specialiserede kurser i database-management

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