Toon posts:

[SQL] 2 forum queries in 1 *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende 2 querys die in 1 zouden moeten kunnen voor een betere performance, maar tot op heden is dat mij helaas niet gelukt.

Deze worden in een while-loop uitgevoerd,
s.subjectid,s.subject,s.date wordt opgevraagd, daarna wordt messageid,date,time
opgevraagd aan de hand van s.subjectid.

MySQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT S.subjectid,S.subject,U.username,S.date 
FROM subject S, user U 
WHERE S.author = U.userid 
AND S.visible='1' 
ORDER BY S.subjectid DESC 
LIMIT " + positie + ",20;

SELECT messageid,date,time 
FROM message 
WHERE subjectid='" + subjectid + "' 
AND visible='1' 
ORDER BY messageid DESC 
LIMIT 1;


Deze 2 gebruik ik om een index te genereren voor een forum. Wat ik wil proberen: s.subjectid=m.subjectid en order op m.date and m.time.
Helaas ben ik er nog steeds niet uit.. Heb left join al tevergeefs geprobeerd (mss n foutje hierin..)

MySQL:
1
2
3
4
5
6
7
SELECT s.subjectid,s.subject,message.messageid,message.date,message.time
FROM subject s
JOIN message
ON s.subjectid=message.subjectid
ORDER BY s.subjectid
DESC
LIMIT 10;


Is er iemand die mij kan helpen? Thank in advance!

edit:
nog paar code brackets erbij :) Btw, het is n forum welke ik vrijwillig gemaakt heb (en al 2 jaar bijwerk) voor n internet community, welke hier wel eens voorbij is gekomen, for those who's interested

[ Voor 20% gewijzigd door Verwijderd op 22-02-2004 17:04 ]


Verwijderd

Het kan. En jij kan het na 1 middag verdiepen in queries. Wat het je al geprobeert en waar loop je op vast?

[ Voor 29% gewijzigd door Verwijderd op 22-02-2004 13:52 ]


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Zou je de code tussen [code] tags willen stoppen?

DM!


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

***** Lees dit! Over topictitels in P&W ***** en [code]-tags aangebracht en zo :)

Professionele website nodig?


Verwijderd

Topicstarter
offtopic:
Thanks! Ben nog maar n newbie hier ;)

[ontopic]Ik maak gebruik van MySQL 4.0.13. Verschillende query's zoals:
MySQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT s.subjectid,s.subject,s.date,m.messageid,m.date,m.time 
FROM subject s, message m 
WHERE s.subjectid=m.subjectid 
AND s.visible 
AND m.visible 
ORDER BY m.date 
AND m.time 
ASC
LIMIT 10;

SELECT s.subjectid,s.subject,message.messageid,message.date,message.time
FROM subject s 
LEFT JOIN subject
ON s.subjectid=message.subjectid 
ORDER BY s.subjectid 
DESC
LIMIT 10;

en eerder genoemde werkten niet, meestal kwamen topics meerdere malen voor ipv enkelmalig.
Kheb dit geprobeert met de manual van mysql.com ernaast (waar ik helaas niet zoveel aan had). Kheb het idee dat ik ergens een kleine fout heb gemaakt.[/ontopic]

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
/me schuurt enterprise manager open om ff het juiste voorbeeld te vinden

ASP:
1
2
FROM subject
LEFT JOIN message ON subject.ID = message.ID


zou het moeten doen...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
FvKnijff schreef op 22 februari 2004 @ 17:11:
/me schuurt enterprise manager open om ff het juiste voorbeeld te vinden

ASP:
1
2
FROM subject
LEFT JOIN message ON subject.ID = message.ID


zou het moeten doen...
Okay thanks! Dit begint erop te lijken, maar is het nog niet helemaal.. hiervan heb ik kunnen maken:
MySQL:
1
2
3
4
5
6
7
8
9
10
mysql> SELECT subject.subjectid,subject.subject,message.messageid,message.date,
essage.time
FROM subject
LEFT JOIN message
ON message.subjectid=messageid
WHERE subject.visible='1' 
ORDER BY message.date 
AND message.time 
DESC 
LIMIT 10;


Hier wordt 7.74sec over gedaan (zijn die 2 query's toch sneller klaar).
Plus de uitkomst is niet wat het zou moeten zijn. Ik krijg voor message.messageid,message.date dezelfde waarden eruit. En het lijkt dat het er een willekeurige volgorde in zit, niet de eerst gewijzigde topics komen eruit, maar ook niet de laatste gewijzigde, gewoon willekeurig.

Overigens leek de volgende query er meer op te lijken hoewel de order by op subjectid zit ipv date and time. Hier ook weer dezelfde waarden steeds bij messageid,date en time.

MySQL:
1
2
3
4
5
6
7
8
9
SELECT subject.subjectid,subject.subject,message.messageid,message.date,m
essage.time
FROM subject 
LEFT JOIN message
ON message.subjectid=messageid 
WHERE subject.visible='1'
ORDER BY subject.subjectid
DESC
LIMIT 10;
Pagina: 1