Avatar billede fangel Nybegynder
28. februar 2003 - 20:41 Der er 9 kommentarer og
1 løsning

Lette kryptisk MySQL Query | Part 2

Hej

jeg har i et andet spm. fået lavet dette MySQL query... prob. er at det ikke virker 100%...

$SQL = "SELECT a.ID, a.Headline, a.date,  COUNT( * ) AS antal_kommentare FROM forum AS a, forum AS b WHERE a.ID = b.Ref_ID AND b.Board = '$Board' GROUP BY a.ID DESC";

det jeg vil have det til, er at finde:
ID
Headline
date
Ref_Date
(og så den kryptiske) antal_kommentare...

tabellen den skal trækkes fra ser sådan her ud:

CREATE TABLE forum (
  ID int(11) NOT NULL auto_increment,
  Ref_ID int(11) NOT NULL default '0',
  Board int(11) NOT NULL default '',
  Headline tinytext NOT NULL,
  date int(11) NOT NULL default '0',
  Ref_Date int(11) NOT NULL default '',
  PRIMARY KEY  (ID)
)

og indholdet kan fx se sådan her ud:

1, 0, 2, 'test 1', [unix time stamp], [unix time stamp]
2, 0, 4, 'test 2', [unix time stamp], [unix time stamp]
3, 1, '', '', [unix time stamp], [unix time stamp]
4, 0, 2, 'test 3', [unix time stamp], [unix time stamp]
5, 4, '', '', [unix time stamp], [unix time stamp]
6, 1, '', '', [unix time stamp], [unix time stamp]

hvis jeg så laver query'et med $board = 2, så vil jeg gerne have disse rækker tilbage
(i formen: ID, Headline, Ref_Date, antal_kommentare)

1, 'test 1', [unix time stamp], 2 // antal_kommentare = 2, fordi der findes 2 rækker med ref_id = 1

4, 'test 3', [unix time stamp], 1 // der findes 1 række med ref_id = 4

håber i forstår, det er lidt kryptisk...

det som fejlen ved det nuværende query er, at den ikke finde de række hvor der ikke er nogle kommentare til, altså hvor antal_kommentare vill være 0...
fejlen ligger jo i at man siger "where a.id = b.ref_id and b.board = '$board'"... derfor kan der kun komme rækker med kommentare, men jeg KAN ikke selv rette dette, har prøvet en 42-47 forskellige ting nu... kan ikke løse det...

håber altså at i forstår...

Morten
Avatar billede nicklasb Nybegynder
01. marts 2003 - 10:25 #1
hvad sker der hvis du indsætter en :

WHERE a.ID = b.Ref_ID OR a.ID = b.Ref_ID AND b.Board = '$Board'
Vil den så stadig sortere rigtigt?? Eller kommer den så helt forkert ud?
Avatar billede fangel Nybegynder
01. marts 2003 - 10:32 #2
nope... det virkede ik'... ;) den finder KUN det ene indlæg, selv om der er 3 med Ref_ID = 0, og den finder det samme, lige meget hvad $Board er sat til... ;)

men prøv endeligt igen... jeg har givet op...

Morten
Avatar billede nicklasb Nybegynder
01. marts 2003 - 10:40 #3
WHERE a.ID = b.Ref_ID OR a.ID = '0' AND b.Board = '$Board'

Den ER 0 ikk?? Det er ikke bare igen ting vel??
Avatar billede fangel Nybegynder
01. marts 2003 - 10:52 #4
det er 0... men måske de skal gruppes lidt... fx

WHERE (a.ID = b.Ref_ID OR a.ID = '0') AND b.Board = '$Board'... jeg prøver lige... (hvo, kig ikket trykket [udfør], så jeg har testet, det blev et "negativ, sir"... det virker heller ik'... den finder ALT for meget...)

Morten
Avatar billede nicklasb Nybegynder
01. marts 2003 - 10:55 #5
hvad må den ikke atge ud??
Avatar billede nicklasb Nybegynder
01. marts 2003 - 11:01 #6
jeg gidder ikke lige skulle teste dem.. men prøv evt med:

WHERE (a.ID = b.Ref_ID AND b.Board = '$Board') OR (a.ID = '0' AND b.Board = '$Board')

ved det bliver en ordentlig gang rodet lort.. men prøv den. så kan vi alt tid senere evt lave den om..
Avatar billede fangel Nybegynder
01. marts 2003 - 11:06 #7
virker heller ik'...

PS, har du MSN, så kunne vi lige snakke over det, og så er det også nemmere at teste, da vi bare kan lave test's på min server... ;)

så hvis du har MSN, så skriv den lige, så er det lidt nemmere at snakke om det... ;)

Morten
Avatar billede nicklasb Nybegynder
01. marts 2003 - 11:09 #8
jo.. jeg har msn.. men jeg er ikke lige frem en haj til mysql..
men nicklas@bornstein.dk
Avatar billede fangel Nybegynder
01. marts 2003 - 11:11 #9
så, har lige addet dig (tag dig ikke af navnet, det er lidt sort... ;)
Avatar billede fangel Nybegynder
10. juni 2003 - 21:57 #10
ahh... der var herfra jeg havde din MSN ;)

lukker

Morten
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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