<?xml version="1.0" encoding="ISO-8859-15"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
	<channel>
		<copyright>All rights reserved</copyright>
		<pubDate>Fri, 29 Aug 2008 20:34:43 GMT</pubDate>
		<lastBuildDate>Fri, 29 Aug 2008 20:34:43 GMT</lastBuildDate>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<description>GoT - list_messages</description>
		<image>
			<link>http://gathering.tweakers.net</link>
			<title>Gathering of Tweakers</title>
			<url>http://tweakimg.net/g/if/logo.gif</url>
		</image>
		<language>nl-nl</language>
		<link>http://gathering.tweakers.net/rss/list_messages/1292163/last</link>
		<atom:link href="http://gathering.tweakers.net/rss/list_messages/1292163/last" rel="self" type="application/rss+xml" />
		<title>[SQL] Maximum aantal resultaten per seconde - Programming - GoT</title>
		<webMaster>gathering@tweakers.net (Administrator)</webMaster>
		<item>
			<title>RobIII</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060472?data%5Bsource%5D=rss#30060472</link>
			<author>dummy@example.com (RobIII)</author>
			<description>dinsdag 13 mei 2008 12:46
Wat heeft dit met SEA te maken?
Waar hoort mijn topic?
SEA &gt;&gt; PRG 

En verder: wat heb je zelf al geprobeerd?</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 12:46<br />
Wat heeft dit met SEA te maken?<br>
<a href="http://gathering.tweakers.net/forum/list_messages/1111158" rel="external">Waar hoort mijn topic?</a><br>
SEA &gt;&gt; PRG <br>
<br>
En verder: wat heb je zelf al geprobeerd?]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060472#30060472</guid>
			<pubDate>Tue, 13 May 2008 10:46:48 GMT</pubDate>
		</item>
		<item>
			<title>.oisyn</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060511?data%5Bsource%5D=rss#30060511</link>
			<author>dummy@example.com (.oisyn)</author>
			<description>dinsdag 13 mei 2008 12:52
Heb je al bedacht hoe je dat met de hand op zou moeten lossen? Dat idee heb ik namelijk niet, en als de een query moet bedenken zonder dat je dat al weet dan loop je idd vast .

Overigens denk ik niet dat het met een query te doen is. Je hebt op z&#039;n minst een stored procedure nodig als je het in de db zelf al op wilt lossen.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 12:52<br />
Heb je al bedacht hoe je dat met de hand op zou moeten lossen? Dat idee heb ik namelijk niet, en als de een query moet bedenken zonder dat je dat al weet dan loop je idd vast <img src="http://gathering.tweakers.net/global/smileys/smile.gif" width="15"  height="15" alt=":)" class="smiley">.<br>
<br>
Overigens denk ik niet dat het met een query te doen is. Je hebt op z&#039;n minst een stored procedure nodig als je het in de db zelf al op wilt lossen.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060511#30060511</guid>
			<pubDate>Tue, 13 May 2008 10:52:25 GMT</pubDate>
		</item>
		<item>
			<title>justmental</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060531?data%5Bsource%5D=rss#30060531</link>
			<author>dummy@example.com (justmental)</author>
			<description>dinsdag 13 mei 2008 12:55
Het maximum aantal gesprekken kan alleen bereikt worden op de begintijd van een gesprek.
Gelijktijdige gesprekken van dit gesprek hebben deze begintijd tussen hun begintijd en eindtijd in zitten.
Een bijzonder geval hierbij is het piekgesprek zelf, dus de telling moet altijd eentje minder zijn.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 12:55<br />
Het maximum aantal gesprekken kan alleen bereikt worden op de begintijd van een gesprek.<br>
Gelijktijdige gesprekken van dit gesprek hebben deze begintijd tussen hun begintijd en eindtijd in zitten.<br>
Een bijzonder geval hierbij is het piekgesprek zelf, dus de telling moet altijd eentje minder zijn.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060531#30060531</guid>
			<pubDate>Tue, 13 May 2008 10:55:37 GMT</pubDate>
		</item>
		<item>
			<title>Noork</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060554?data%5Bsource%5D=rss#30060554</link>
			<author>dummy@example.com (Noork)</author>
			<description>dinsdag 13 mei 2008 12:59
mmh beetje vaag topic. Je kan toch gewoon een select uitvoeren, waarbij je dan alle records selecteert waarbij de eindtijd nog leeg is? Ik neem aan dat die leeg is als het gesprek nog bezig is. Hoe je dit verder uitvoert, met cronjob of niet, is afhankelijk van je wensen natuurlijk.

edit:oeps, ik had de vraag niet helemaal door.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 12:59<br />
mmh beetje vaag topic. Je kan toch gewoon een select uitvoeren, waarbij je dan alle records selecteert waarbij de eindtijd nog leeg is? Ik neem aan dat die leeg is als het gesprek nog bezig is. Hoe je dit verder uitvoert, met cronjob of niet, is afhankelijk van je wensen natuurlijk.<br>
<br>
<div class="edit">edit:<br>oeps, ik had de vraag niet helemaal door.</div>]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060554#30060554</guid>
			<pubDate>Tue, 13 May 2008 10:59:08 GMT</pubDate>
		</item>
		<item>
			<title>.oisyn</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060571?data%5Bsource%5D=rss#30060571</link>
			<author>dummy@example.com (.oisyn)</author>
			<description>dinsdag 13 mei 2008 13:02
quote:justmental schreef op dinsdag 13 mei 2008 @ 12:55:
Het maximum aantal gesprekken kan alleen bereikt worden op de begintijd van een gesprek.Nou ja eigenlijk tussen de begintijd van een gesprek en de eindtijd van het eerstvolgende eindigende gesprek, maar als je de standaard haakjes-tellen-methode aanhoudt dan bereik je dat maximum idd bij de start van een gesprek (je zou ook andersom kunnen tellen namelijk ).</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 13:02<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30060531#30060531" rel="external" class="messagelink">justmental schreef op dinsdag 13 mei 2008 @ 12:55</a>:</b><br>
Het maximum aantal gesprekken kan alleen bereikt worden op de begintijd van een gesprek.</div></blockquote>Nou ja eigenlijk tussen de begintijd van een gesprek en de eindtijd van het eerstvolgende eindigende gesprek, maar als je de standaard haakjes-tellen-methode aanhoudt dan bereik je dat maximum idd bij de start van een gesprek (je zou ook andersom kunnen tellen namelijk <img src="http://gathering.tweakers.net/global/smileys/wink.gif" width="15"  height="15" alt=";)" class="smiley">).]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060571#30060571</guid>
			<pubDate>Tue, 13 May 2008 11:02:32 GMT</pubDate>
		</item>
		<item>
			<title>dajappie</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060668?data%5Bsource%5D=rss#30060668</link>
			<author>dummy@example.com (dajappie)</author>
			<description>dinsdag 13 mei 2008 13:20
Alleen in SQL lijkt me erg lastig. Efficientst zou waarschijnlijk zijn om een array te bouwen van 1440 of 86400 regels (elke minuut of seconde van een dag en een teller), dan eenmalig alle records van een dag te selecteren en per record in de array aan te geven in welke periodes het gesprek bezig was. Vervolgens orden je de array op aantal en daar heb je je maximum. Iets dergelijks kan je misschien met een tijdelijke tabel en een subselect ook doen, maar als je dan niet indexeert op tijd wordt het vast niet heel snel aangezien je veel meer queries moet doen.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 13:20<br />
Alleen in SQL lijkt me erg lastig. Efficientst zou waarschijnlijk zijn om een array te bouwen van 1440 of 86400 regels (elke minuut of seconde van een dag en een teller), dan eenmalig alle records van een dag te selecteren en per record in de array aan te geven in welke periodes het gesprek bezig was. Vervolgens orden je de array op aantal en daar heb je je maximum. Iets dergelijks kan je misschien met een tijdelijke tabel en een subselect ook doen, maar als je dan niet indexeert op tijd wordt het vast niet heel snel aangezien je veel meer queries moet doen.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060668#30060668</guid>
			<pubDate>Tue, 13 May 2008 11:20:32 GMT</pubDate>
		</item>
		<item>
			<title>RobIII</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060678?data%5Bsource%5D=rss#30060678</link>
			<author>dummy@example.com (RobIII)</author>
			<description>dinsdag 13 mei 2008 13:22
quote:dajappie schreef op dinsdag 13 mei 2008 @ 13:20:
Vervolgens orden je de array op aantal en daar heb je je maximum.Waarom nog ordenen? Je kunt tijdens het vullen toch al prima de max bijhouden? En desnoods race je 1 keer door je array om de max te vinden; nog altijd sneller dan een sort </description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 13:22<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30060668#30060668" rel="external" class="messagelink">dajappie schreef op dinsdag 13 mei 2008 @ 13:20</a>:</b><br>
Vervolgens orden je de array op aantal en daar heb je je maximum.</div></blockquote>Waarom nog ordenen? Je kunt tijdens het vullen toch al prima de max bijhouden? En desnoods race je 1 keer door je array om de max te vinden; nog altijd sneller dan een sort <img src="http://gathering.tweakers.net/global/smileys/wink.gif" width="15"  height="15" alt=";)" class="smiley">]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060678#30060678</guid>
			<pubDate>Tue, 13 May 2008 11:22:46 GMT</pubDate>
		</item>
		<item>
			<title>robigoal</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060776?data%5Bsource%5D=rss#30060776</link>
			<author>dummy@example.com (robigoal)</author>
			<description>dinsdag 13 mei 2008 13:41
Bedankt voor de snelle reacties. Het probleem wat ik had was het grote aantal query&#039;s wat nodig was (script reageerde veel te langzaam). Ik zal het nu proberen om de manier zoals dajappie die omschreef. Een array maken met php en dan alle records ophalen en de (seconden)array vullen.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 13:41<br />
Bedankt voor de snelle reacties. Het probleem wat ik had was het grote aantal query&#039;s wat nodig was (script reageerde veel te langzaam). Ik zal het nu proberen om de manier zoals dajappie die omschreef. Een array maken met php en dan alle records ophalen en de (seconden)array vullen.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060776#30060776</guid>
			<pubDate>Tue, 13 May 2008 11:41:53 GMT</pubDate>
		</item>
		<item>
			<title>.oisyn</title>
			<link>http://gathering.tweakers.net/forum/list_message/30060850?data%5Bsource%5D=rss#30060850</link>
			<author>dummy@example.com (.oisyn)</author>
			<description>dinsdag 13 mei 2008 13:53
quote:dajappie schreef op dinsdag 13 mei 2008 @ 13:20:
Alleen in SQL lijkt me erg lastig. Efficientst zou waarschijnlijk zijn om een array te bouwen van 1440 of 86400 regels (elke minuut of seconde van een dag en een teller)En dan zit je dus per seconde of per minuut te werken, wat niet per se hoeft te kloppen. Het handigst is waar ik al naar hintte: zet de tabel om in events - een begin-event en een eind-event. Gooi alle events op een hoop en sorteer die op tijd. Loop er dan in volgorde overheen, waarbij je een tellertje bijhoudt die bij 0 begint en +1 doet bij een nieuw gesprek en -1 bij een eindigend gesprek. Hou verder nog de maximale waarde bij.

Als je over alle gegevens bent gelopen is je maximale waarde het maximum aantal gesprekken op een bepaald moment.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 13:53<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30060668#30060668" rel="external" class="messagelink">dajappie schreef op dinsdag 13 mei 2008 @ 13:20</a>:</b><br>
Alleen in SQL lijkt me erg lastig. Efficientst zou waarschijnlijk zijn om een array te bouwen van 1440 of 86400 regels (elke minuut of seconde van een dag en een teller)</div></blockquote>En dan zit je dus per seconde of per minuut te werken, wat niet per se hoeft te kloppen. Het handigst is waar ik al naar hintte: zet de tabel om in events - een begin-event en een eind-event. Gooi alle events op een hoop en sorteer die op tijd. Loop er dan in volgorde overheen, waarbij je een tellertje bijhoudt die bij 0 begint en +1 doet bij een nieuw gesprek en -1 bij een eindigend gesprek. Hou verder nog de maximale waarde bij.<br>
<br>
Als je over alle gegevens bent gelopen is je maximale waarde het maximum aantal gesprekken op een bepaald moment.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30060850#30060850</guid>
			<pubDate>Tue, 13 May 2008 11:53:21 GMT</pubDate>
		</item>
		<item>
			<title>Bosmonster</title>
			<link>http://gathering.tweakers.net/forum/list_message/30061010?data%5Bsource%5D=rss#30061010</link>
			<author>dummy@example.com (Bosmonster)</author>
			<description>dinsdag 13 mei 2008 14:20
Andere manier dan achteraf opzoeken is misschien in je applicatie bijhouden hoeveel actieve gesprekken er zijn (kwestie van +1 bij start en -1 bij einde gesprek). Hierbij kun je ook even kijken of het huidige aantal hoger is dan het maximum van die dag (of andere eenheid) en zo ja dat maximum vervangen.

Zo zou je uiteindelijk een tabel overhouden met per eenheid (uur, dag, wat je wilt) het maximum aantal gesprekken tegelijk. Zo kun je ook zonder hele zware bewerkingen achteraf hier statistieken aan verbinden over langere tijd.

Edit: lees nu .oisyns reactie pas  Zegt ongeveer hetzelfde, maar dan alsnog achteraf. Keuze is aan TS natuurlijk. Ik geef zelf vaak voorkeur aan eenvoudige gegevens continu bijhouden ipv zware bewerkingen achteraf.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 14:20<br />
Andere manier dan achteraf opzoeken is misschien in je applicatie bijhouden hoeveel actieve gesprekken er zijn (kwestie van +1 bij start en -1 bij einde gesprek). Hierbij kun je ook even kijken of het huidige aantal hoger is dan het maximum van die dag (of andere eenheid) en zo ja dat maximum vervangen.<br>
<br>
Zo zou je uiteindelijk een tabel overhouden met per eenheid (uur, dag, wat je wilt) het maximum aantal gesprekken tegelijk. Zo kun je ook zonder hele zware bewerkingen achteraf hier statistieken aan verbinden over langere tijd.<br>
<br>
Edit: lees nu .oisyns reactie pas <img src="http://gathering.tweakers.net/global/smileys/clown.gif" width="15"  height="15" alt=":+" class="smiley"> Zegt ongeveer hetzelfde, maar dan alsnog achteraf. Keuze is aan TS natuurlijk. Ik geef zelf vaak voorkeur aan eenvoudige gegevens continu bijhouden ipv zware bewerkingen achteraf.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30061010#30061010</guid>
			<pubDate>Tue, 13 May 2008 12:20:24 GMT</pubDate>
		</item>
		<item>
			<title>pkuppens</title>
			<link>http://gathering.tweakers.net/forum/list_message/30061068?data%5Bsource%5D=rss#30061068</link>
			<author>dummy@example.com (pkuppens)</author>
			<description>dinsdag 13 mei 2008 14:32
quote:.oisyn schreef op dinsdag 13 mei 2008 @ 13:53:
[...]

En dan zit je dus per seconde of per minuut te werken, wat niet per se hoeft te kloppen. Het handigst is waar ik al naar hintte: zet de tabel om in events - een begin-event en een eind-event. Gooi alle events op een hoop en sorteer die op tijd. Loop er dan in volgorde overheen, waarbij je een tellertje bijhoudt die bij 0 begint en +1 doet bij een nieuw gesprek en -1 bij een eindigend gesprek. Hou verder nog de maximale waarde bij.

Als je over alle gegevens bent gelopen is je maximale waarde het maximum aantal gesprekken op een bepaald moment.What he says 

Iets andere smaak daarvan is een tellertje bijhouden voor ieder tegengekomen tijdstip van het aantal gesprekken dat ooit gestart is en ooit ge-eindigd is. 
Iets SQL-esquer?! Allemaal wel makkelijk in extra tabellen te updaten.
Mag je alsnog wel maximaliseren over het verschil, sorteren e.d..</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 14:32<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30060850#30060850" rel="external" class="messagelink">.oisyn schreef op dinsdag 13 mei 2008 @ 13:53</a>:</b><br>
[...]<br>
<br>
En dan zit je dus per seconde of per minuut te werken, wat niet per se hoeft te kloppen. Het handigst is waar ik al naar hintte: zet de tabel om in events - een begin-event en een eind-event. Gooi alle events op een hoop en sorteer die op tijd. Loop er dan in volgorde overheen, waarbij je een tellertje bijhoudt die bij 0 begint en +1 doet bij een nieuw gesprek en -1 bij een eindigend gesprek. Hou verder nog de maximale waarde bij.<br>
<br>
Als je over alle gegevens bent gelopen is je maximale waarde het maximum aantal gesprekken op een bepaald moment.</div></blockquote>What he says <img src="http://gathering.tweakers.net/global/smileys/smile.gif" width="15"  height="15" alt=":)" class="smiley"><br>
<br>
Iets andere smaak daarvan is een tellertje bijhouden voor ieder tegengekomen tijdstip van het aantal gesprekken dat ooit gestart is en ooit ge-eindigd is. <br>
Iets SQL-esquer?! Allemaal wel makkelijk in extra tabellen te updaten.<br>
Mag je alsnog wel maximaliseren over het verschil, sorteren e.d..]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30061068#30061068</guid>
			<pubDate>Tue, 13 May 2008 12:32:50 GMT</pubDate>
		</item>
		<item>
			<title>.oisyn</title>
			<link>http://gathering.tweakers.net/forum/list_message/30061166?data%5Bsource%5D=rss#30061166</link>
			<author>dummy@example.com (.oisyn)</author>
			<description>dinsdag 13 mei 2008 14:51
quote:pkuppens schreef op dinsdag 13 mei 2008 @ 14:32:
What he says 

Iets andere smaak daarvan is een tellertje bijhouden voor ieder tegengekomen tijdstip van het aantal gesprekken dat ooit gestart is en ooit ge-eindigd is.Da&#039;s idd ook wel een goede. Die data is met een simpele query wel te krijgen. Ook updates zijn goed te doen - een insert betekent een extra startcount voor alle rijen met een starttijd groter dan de starttijd van de nieuwe entry en een extra eindcount voor alle rijen met een eindtijd groter dan de eindtijd van de nieuwe entry. Bij deletes een vergelijkbare update (aftrekken ipv optellen). Sterker nog, je hebt niet eens aparte counters nodig - je kunt ook gewoon direct het verschil in de kolom opslaan. En dan moet je dus ophogen/verlagen bij alle gesprekken die begonnen zijn tussen starttijd en eindtijd bij resp. een insert en een delete.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 14:51<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30061068#30061068" rel="external" class="messagelink">pkuppens schreef op dinsdag 13 mei 2008 @ 14:32</a>:</b><br>
What he says <img src="http://gathering.tweakers.net/global/smileys/smile.gif" width="15"  height="15" alt=":)" class="smiley"><br>
<br>
Iets andere smaak daarvan is een tellertje bijhouden voor ieder tegengekomen tijdstip van het aantal gesprekken dat ooit gestart is en ooit ge-eindigd is.</div></blockquote>Da&#039;s idd ook wel een goede. Die data is met een simpele query wel te krijgen. Ook updates zijn goed te doen - een insert betekent een extra startcount voor alle rijen met een starttijd groter dan de starttijd van de nieuwe entry en een extra eindcount voor alle rijen met een eindtijd groter dan de eindtijd van de nieuwe entry. Bij deletes een vergelijkbare update (aftrekken ipv optellen). Sterker nog, je hebt niet eens aparte counters nodig - je kunt ook gewoon direct het verschil in de kolom opslaan. En dan moet je dus ophogen/verlagen bij alle gesprekken die begonnen zijn tussen starttijd en eindtijd bij resp. een insert en een delete.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30061166#30061166</guid>
			<pubDate>Tue, 13 May 2008 12:51:06 GMT</pubDate>
		</item>
		<item>
			<title>pkuppens</title>
			<link>http://gathering.tweakers.net/forum/list_message/30061303?data%5Bsource%5D=rss#30061303</link>
			<author>dummy@example.com (pkuppens)</author>
			<description>dinsdag 13 mei 2008 15:10
quote:robigoal schreef op dinsdag 13 mei 2008 @ 13:41:
Bedankt voor de snelle reacties. Het probleem wat ik had was het grote aantal query&#039;s wat nodig was (script reageerde veel te langzaam). Ik zal het nu proberen om de manier zoals dajappie die omschreef. Een array maken met php en dan alle records ophalen en de (seconden)array vullen.Begin alsjeblieft niet met dat idee. Je hele bouwwerk valt om zodra er een keer iemand besluit om 23:59 voor 2 minuten te gaan bellen.
Of iemand vindt ineens de microsecondes ook belangrijk.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 15:10<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30060776#30060776" rel="external" class="messagelink">robigoal schreef op dinsdag 13 mei 2008 @ 13:41</a>:</b><br>
Bedankt voor de snelle reacties. Het probleem wat ik had was het grote aantal query&#039;s wat nodig was (script reageerde veel te langzaam). Ik zal het nu proberen om de manier zoals dajappie die omschreef. Een array maken met php en dan alle records ophalen en de (seconden)array vullen.</div></blockquote>Begin alsjeblieft niet met dat idee. Je hele bouwwerk valt om zodra er een keer iemand besluit om 23:59 voor 2 minuten te gaan bellen.<br>
Of iemand vindt ineens de microsecondes ook belangrijk.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30061303#30061303</guid>
			<pubDate>Tue, 13 May 2008 13:10:36 GMT</pubDate>
		</item>
		<item>
			<title>dusty</title>
			<link>http://gathering.tweakers.net/forum/list_message/30061538?data%5Bsource%5D=rss#30061538</link>
			<author>dummy@example.com (dusty)</author>
			<description>dinsdag 13 mei 2008 15:45
Er ontbreekt nogal wat aan je vraag wat je wilt, op een bepaalde dag, bepaald uur, bepaald gesprekID...

Dus hier een pseudo query uit de losse pols (zonder te testen) op bepaald gesprek om te kijken hoeveel gesprekken aan de gang was bij het gesprekid 48747.code:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
select
  a.id,
  a.van,
  a.tot,
  count(b.id) as TotalConcurrentCalls
from
  calllog a
  left join calllog b on (
    ( a.van between b.van and b.tot )
    or
    ( a.tot between b.van and b.tot )
    or
    ( b.van between a.van and a.tot )
    or
    ( b.tot between a.van and a.tot )
  )
where
  a.id=48747
group by
  a.id,
  a.van,
  a.tot
order by
  count(b.id)
limit 0,1</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 15:45<br />
Er ontbreekt nogal wat aan je vraag wat je wilt, op een bepaalde dag, bepaald uur, bepaald gesprekID...<br>
<br>
Dus hier een pseudo query uit de losse pols (zonder te testen) op bepaald gesprek om te kijken hoeveel gesprekken aan de gang was bij het gesprekid 48747.<br>code:<br><table class="phphighlight"><tr><td class="phphighlightline"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="phphighlightcode"><div><pre>select
  a.id,
  a.van,
  a.tot,
  count(b.id) as TotalConcurrentCalls
from
  calllog a
  left join calllog b on (
    ( a.van between b.van and b.tot )
    or
    ( a.tot between b.van and b.tot )
    or
    ( b.van between a.van and a.tot )
    or
    ( b.tot between a.van and a.tot )
  )
where
  a.id=48747
group by
  a.id,
  a.van,
  a.tot
order by
  count(b.id)
limit 0,1</pre></div></td></tr></table><br>]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30061538#30061538</guid>
			<pubDate>Tue, 13 May 2008 13:45:28 GMT</pubDate>
		</item>
		<item>
			<title>.oisyn</title>
			<link>http://gathering.tweakers.net/forum/list_message/30061622?data%5Bsource%5D=rss#30061622</link>
			<author>dummy@example.com (.oisyn)</author>
			<description>dinsdag 13 mei 2008 16:00
Dat was de vraag niet. De vraag was wat het maximaal aantal gesprekken tegelijk was. Als gesprek A start, en daarop volgen B, C en D allemaal na elkaar, en dan einigt A weer, dan tel jij er 4, maar het maximum was maar 2. Bovendien kan het ook korter dan die 4 betweens, namelijk: b.van &lt; a.tot AND a.van &lt; b.tot </description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 16:00<br />
Dat was de vraag niet. De vraag was wat het maximaal aantal gesprekken tegelijk was. Als gesprek A start, en daarop volgen B, C en D allemaal na elkaar, en dan einigt A weer, dan tel jij er 4, maar het maximum was maar 2. Bovendien kan het ook korter dan die 4 betweens, namelijk: b.van &lt; a.tot AND a.van &lt; b.tot <img src="http://gathering.tweakers.net/global/smileys/wink.gif" width="15"  height="15" alt=";)" class="smiley">]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30061622#30061622</guid>
			<pubDate>Tue, 13 May 2008 14:00:37 GMT</pubDate>
		</item>
		<item>
			<title>dusty</title>
			<link>http://gathering.tweakers.net/forum/list_message/30061701?data%5Bsource%5D=rss#30061701</link>
			<author>dummy@example.com (dusty)</author>
			<description>dinsdag 13 mei 2008 16:10
Zodra hij de query gaat aanpassen aan wat hij exact wilt ( calls/sec ) zal hij toch &quot;between&quot; gaan gebruiken. </description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 16:10<br />
Zodra hij de query gaat aanpassen aan wat hij exact wilt ( calls/sec ) zal hij toch &quot;between&quot; gaan gebruiken. <img src="http://gathering.tweakers.net/global/smileys/puh2.gif" width="15"  height="15" alt=":P" class="smiley">]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30061701#30061701</guid>
			<pubDate>Tue, 13 May 2008 14:10:50 GMT</pubDate>
		</item>
		<item>
			<title>.oisyn</title>
			<link>http://gathering.tweakers.net/forum/list_message/30061921?data%5Bsource%5D=rss#30061921</link>
			<author>dummy@example.com (.oisyn)</author>
			<description>dinsdag 13 mei 2008 16:44
quote:dusty schreef op dinsdag 13 mei 2008 @ 16:10:
Zodra hij de query gaat aanpassen aan wat hij exact wilt ( calls/sec )Grappig dat jij weet wat hij exact wilt terwijl hij toch echt iets anders zegt in z&#039;n topic . En ik zei niet dat de between in z&#039;n algemeenheid overbodig was, ik zei dat dat wat jij deed korter opgeschreven kon worden.

Wat in z&#039;n algemeenheid dus wel zo is is dat als je twee ranges op overlap wilt testen, dat een (range1.min &lt;= range2.max &amp;&amp; range2.min &lt;= range1.max) volstaat, en je dus niet hoeft te testen of elk van de 4 punten in de andere range voorkomt. Vergelijkbaar (en wellicht wat intuitiever) is de test om te kijken of ze juist niet overlappen: range1.min &gt; range2.max || range2.min &gt; range1.max. Immers, als het minimum van de ene range na het maximum van de andere komt kan er nooit een overlap zijn, en vice versa.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 16:44<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30061701#30061701" rel="external" class="messagelink">dusty schreef op dinsdag 13 mei 2008 @ 16:10</a>:</b><br>
Zodra hij de query gaat aanpassen aan wat hij exact wilt ( calls/sec )</div></blockquote>Grappig dat jij weet wat hij exact wilt terwijl hij toch echt iets anders zegt in z&#039;n topic <img src="http://gathering.tweakers.net/global/smileys/clown.gif" width="15"  height="15" alt=":+" class="smiley">. En ik zei niet dat de between in z&#039;n algemeenheid overbodig was, ik zei dat dat wat jij deed korter opgeschreven kon worden.<br>
<br>
Wat in z&#039;n algemeenheid dus wel zo is is dat als je twee ranges op overlap wilt testen, dat een (range1.min &lt;= range2.max &amp;&amp; range2.min &lt;= range1.max) volstaat, en je dus niet hoeft te testen of elk van de 4 punten in de andere range voorkomt. Vergelijkbaar (en wellicht wat intuitiever) is de test om te kijken of ze juist <i>niet</i> overlappen: range1.min &gt; range2.max || range2.min &gt; range1.max. Immers, als het minimum van de ene range na het maximum van de andere komt kan er nooit een overlap zijn, en vice versa.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30061921#30061921</guid>
			<pubDate>Tue, 13 May 2008 14:44:19 GMT</pubDate>
		</item>
		<item>
			<title>Voutloos</title>
			<link>http://gathering.tweakers.net/forum/list_message/30062007?data%5Bsource%5D=rss#30062007</link>
			<author>dummy@example.com (Voutloos)</author>
			<description>dinsdag 13 mei 2008 16:59
Jep, de overlappende periodes vraag komt zo&#039;n beetje maandelijks terug, zie oa Voutloos in &quot;[PHP/MySQL]Event selecteren binnen tijdg...&quot; . </description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 16:59<br />
Jep, de overlappende periodes vraag komt zo&#039;n beetje maandelijks terug, zie oa <a href="http://gathering.tweakers.net/forum/list_message/29056273#29056273" rel="external">Voutloos in &quot;[PHP/MySQL]Event selecteren binnen tijdg...&quot;</a> . <img src="http://gathering.tweakers.net/global/smileys/smile.gif" width="15"  height="15" alt=":)" class="smiley">]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30062007#30062007</guid>
			<pubDate>Tue, 13 May 2008 14:59:50 GMT</pubDate>
		</item>
		<item>
			<title>.oisyn</title>
			<link>http://gathering.tweakers.net/forum/list_message/30062033?data%5Bsource%5D=rss#30062033</link>
			<author>dummy@example.com (.oisyn)</author>
			<description>dinsdag 13 mei 2008 17:03
M&#039;n occlusion culling code staat ook vol met dat soort tests </description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 17:03<br />
<small>M&#039;n occlusion culling code staat ook vol met dat soort tests <img src="http://gathering.tweakers.net/global/smileys/wink.gif" width="15"  height="15" alt=";)" class="smiley"></small>]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30062033#30062033</guid>
			<pubDate>Tue, 13 May 2008 15:03:33 GMT</pubDate>
		</item>
		<item>
			<title>ACM</title>
			<link>http://gathering.tweakers.net/forum/list_message/30062723?data%5Bsource%5D=rss#30062723</link>
			<author>dummy@example.com (ACM)</author>
			<description>dinsdag 13 mei 2008 19:48
quote:dajappie schreef op dinsdag 13 mei 2008 @ 13:20:
Alleen in SQL lijkt me erg lastig.Het is bijzonder lastig - zo niet onmogelijk - in SQL. Je moet namelijk conditioneel relaties gaan leggen tussen de records van een set waarbij de condities veranderen tijdens de constructie van de set en dat hoort helemaal niet in SQL.quote:Efficientst zou waarschijnlijk zijn om een array te bouwen van 1440 of 86400 regels (elke minuut of seconde van een dag en een teller), dan eenmalig alle records van een dag te selecteren en per record in de array aan te geven in welke periodes het gesprek bezig was. Vervolgens orden je de array op aantal en daar heb je je maximum. Iets dergelijks kan je misschien met een tijdelijke tabel en een subselect ook doen, maar als je dan niet indexeert op tijd wordt het vast niet heel snel aangezien je veel meer queries moet doen.Zelfs als je wel indexeert op tijd is dat erg vervelend om te doen. Bij 10.000 records met willekeurige starttijden over de dag verdeed en willekeurige eindtijden daar maximaal een uur na, kostte het mijn postgresql installatie ruim andehalve minuut om te vinden welke van de 86400 seconden binnen de meeste gesprekken viel.

De procedure die .oisyn beschrijft is echter ook prima in een procedurele SQL-taal te implementeren (zoals plpgsql in PostgreSQL) en daarmee kostte het minder dan 90ms.

Je hoeft daar overigens niet per se losse events van je tabel van te maken, UNION ALL is natuurlijk een prima vriend op zo&#039;n moment:SQL:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253--&#160;tabel&#160;met&#160;10.000&#160;willekeurige&#160;begintijden&#160;op&#160;vandaag
--&#160;en&#160;eindtijd&#160;daar&#160;willekeurig&#160;binnen&#160;3600&#160;seconden&#160;na
CREATE&#160;TABLE&#160;dateranges&#160;AS
SELECT&#160;id,&#160;starttime,
&#160;&#160;starttime&#160;+&#160;(INTERVAL&#160;'1&#160;SECOND'&#160;*&#160;RANDOM()&#160;*&#160;3600)&#160;AS&#160;endtime
FROM
&#160;&#160;(SELECT&#160;generate_series&#160;as&#160;id,
&#160;&#160;&#160;&#160;&#160;&#160;&#160;CURRENT_DATE::TIMESTAMP&#160;+&#160;(INTERVAL&#160;'1&#160;SECOND'&#160;*&#160;RANDOM()&#160;*&#160;86400)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;AS&#160;starttime
&#160;&#160;&#160;&#160;FROM&#160;generate_series(1,10000))&#160;AS&#160;dateseries;

CREATE&#160;INDEX&#160;dateranges_start_end_idx&#160;ON&#160;dateranges&#160;(starttime,&#160;endtime);

--&#160;Deze&#160;select&#160;duurt&#160;zo'n&#160;anderhalve&#160;minuut&#160;bij&#160;mij
SELECT&#160;timemoment,&#160;count(*)&#160;as&#160;cnt
FROM
&#160;&#160;(SELECT&#160;CURRENT_DATE::timestamp
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+&#160;(INTERVAL&#160;'1&#160;SECOND'&#160;*&#160;generate_series)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;as&#160;timemoment
&#160;&#160;&#160;&#160;&#160;FROM&#160;generate_series(0,&#160;86399))&#160;as&#160;t
JOIN&#160;dateranges&#160;d&#160;ON&#160;timemoment&#160;BETWEEN&#160;d.starttime&#160;AND&#160;d.endtime
GROUP&#160;BY&#160;timemoment
ORDER&#160;BY&#160;cnt&#160;DESC;
--&#160;Time:&#160;91044.799&#160;ms

--&#160;En&#160;deze&#160;procedure&#160;is&#160;zo&#160;klaar:
CREATE&#160;OR&#160;REPLACE&#160;FUNCTION&#160;count_max_usage&#160;()&#160;
&#160;&#160;&#160;&#160;RETURNS&#160;integer&#160;AS&#160;$$
DECLARE&#160;
&#160;&#160;&#160;&#160;counter&#160;INTEGER;
&#160;&#160;&#160;&#160;maxcount&#160;INTEGER;
&#160;&#160;&#160;&#160;temp&#160;RECORD;
BEGIN
&#160;&#160;&#160;&#160;maxcount&#160;:=&#160;0;
&#160;&#160;&#160;&#160;counter&#160;:=&#160;0;
&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;FOR&#160;temp&#160;IN&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(SELECT&#160;1&#160;as&#160;incr,&#160;starttime&#160;as&#160;tm&#160;FROM&#160;dateranges
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;UNION&#160;ALL
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SELECT&#160;-1&#160;as&#160;incr,&#160;endtime&#160;as&#160;tm&#160;FROM&#160;dateranges)&#160;ORDER&#160;BY&#160;tm
&#160;&#160;&#160;&#160;LOOP
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;counter&#160;:=&#160;counter&#160;+&#160;temp.incr;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IF&#160;counter&#160;&gt;&#160;maxcount&#160;THEN&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;maxcount&#160;:=&#160;counter;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;END&#160;IF;
&#160;&#160;&#160;&#160;END&#160;LOOP;
&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;RETURN&#160;maxcount;
END&#160;&#160;&#160;&#160;
$$&#160;LANGUAGE&#160;plpgsql;

SELECT&#160;count_max_usage();
--&#160;Time:&#160;89.051&#160;msIk weet niet hoe goed MySQL&#039;s functionele taal is in 5.1, maar die PostgreSQL-functie zou je op zich vrij eenvoudig moeten kunnen vertalen naar een functie in MySQL.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 19:48<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30060668#30060668" rel="external" class="messagelink">dajappie schreef op dinsdag 13 mei 2008 @ 13:20</a>:</b><br>
Alleen in SQL lijkt me erg lastig.</div></blockquote>Het is bijzonder lastig - zo niet onmogelijk - in SQL. Je moet namelijk conditioneel relaties gaan leggen tussen de records van een set waarbij de condities veranderen tijdens de constructie van de set en dat hoort helemaal niet in SQL.<blockquote><div>quote:</div><div class="message-quote-div">Efficientst zou waarschijnlijk zijn om een array te bouwen van 1440 of 86400 regels (elke minuut of seconde van een dag en een teller), dan eenmalig alle records van een dag te selecteren en per record in de array aan te geven in welke periodes het gesprek bezig was. Vervolgens orden je de array op aantal en daar heb je je maximum. Iets dergelijks kan je misschien met een tijdelijke tabel en een subselect ook doen, maar als je dan niet indexeert op tijd wordt het vast niet heel snel aangezien je veel meer queries moet doen.</div></blockquote>Zelfs als je wel indexeert op tijd is dat erg vervelend om te doen. Bij 10.000 records met willekeurige starttijden over de dag verdeed en willekeurige eindtijden daar maximaal een uur na, kostte het mijn postgresql installatie ruim andehalve minuut om te vinden welke van de 86400 seconden binnen de meeste gesprekken viel.<br>
<br>
De procedure die .oisyn beschrijft is echter ook prima in een procedurele SQL-taal te implementeren (zoals plpgsql in PostgreSQL) en daarmee kostte het minder dan 90ms.<br>
<br>
Je hoeft daar overigens niet per se losse events van je tabel van te maken, UNION ALL is natuurlijk een prima vriend op zo&#039;n moment:<br>SQL:<br><table class="phphighlight"><tr><td class="phphighlightline"><code>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>21<br>22<br>23<br>24<br>25<br>26<br>27<br>28<br>29<br>30<br>31<br>32<br>33<br>34<br>35<br>36<br>37<br>38<br>39<br>40<br>41<br>42<br>43<br>44<br>45<br>46<br>47<br>48<br>49<br>50<br>51<br>52<br>53<br></code></td><td class="phphighlightcode"><div><code><span class="code_comment">--&#160;tabel&#160;met&#160;10.000&#160;willekeurige&#160;begintijden&#160;op&#160;vandaag</span>
<br><span class="code_comment">--&#160;en&#160;eindtijd&#160;daar&#160;willekeurig&#160;binnen&#160;3600&#160;seconden&#160;na</span>
<br><span class="code_keyword">CREATE</span>&#160;<span class="code_keyword">TABLE</span>&#160;<span class="code_ident">dateranges</span>&#160;<span class="code_keyword">AS</span>
<br><span class="code_keyword">SELECT</span>&#160;<span class="code_ident">id</span>,&#160;<span class="code_ident">starttime</span>,
<br>&#160;&#160;<span class="code_ident">starttime</span>&#160;+&#160;(<span class="code_keyword">INTERVAL</span>&#160;<span class="code_string">'1&#160;SECOND'</span>&#160;*&#160;<span class="code_method">RANDOM</span>()&#160;*&#160;<span class="code_number">3600</span>)&#160;<span class="code_keyword">AS</span>&#160;<span class="code_ident">endtime</span>
<br><span class="code_keyword">FROM</span>
<br>&#160;&#160;(<span class="code_keyword">SELECT</span>&#160;<span class="code_ident">generate_series</span>&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">id</span>,
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">CURRENT_DATE</span>::<span class="code_keyword">TIMESTAMP</span>&#160;+&#160;(<span class="code_keyword">INTERVAL</span>&#160;<span class="code_string">'1&#160;SECOND'</span>&#160;*&#160;<span class="code_method">RANDOM</span>()&#160;*&#160;<span class="code_number">86400</span>)
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">AS</span>&#160;<span class="code_ident">starttime</span>
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">FROM</span>&#160;<span class="code_method">generate_series</span>(<span class="code_number">1</span>,<span class="code_number">10000</span>))&#160;<span class="code_keyword">AS</span>&#160;<span class="code_ident">dateseries</span>;
<br>
<br><span class="code_keyword">CREATE</span>&#160;<span class="code_keyword">INDEX</span>&#160;<span class="code_ident">dateranges_start_end_idx</span>&#160;<span class="code_keyword">ON</span>&#160;<span class="code_method">dateranges</span>&#160;(<span class="code_ident">starttime</span>,&#160;<span class="code_ident">endtime</span>);
<br>
<br><span class="code_comment">--&#160;Deze&#160;select&#160;duurt&#160;zo'n&#160;anderhalve&#160;minuut&#160;bij&#160;mij</span>
<br><span class="code_keyword">SELECT</span>&#160;<span class="code_ident">timemoment</span>,&#160;<span class="code_method">count</span>(*)&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">cnt</span>
<br><span class="code_keyword">FROM</span>
<br>&#160;&#160;(<span class="code_keyword">SELECT</span>&#160;<span class="code_keyword">CURRENT_DATE</span>::<span class="code_keyword">timestamp</span>
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+&#160;(<span class="code_keyword">INTERVAL</span>&#160;<span class="code_string">'1&#160;SECOND'</span>&#160;*&#160;<span class="code_ident">generate_series</span>)
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">timemoment</span>
<br>&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">FROM</span>&#160;<span class="code_method">generate_series</span>(<span class="code_number">0</span>,&#160;<span class="code_number">86399</span>))&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">t</span>
<br><span class="code_keyword">JOIN</span>&#160;<span class="code_ident">dateranges</span>&#160;<span class="code_ident">d</span>&#160;<span class="code_keyword">ON</span>&#160;<span class="code_ident">timemoment</span>&#160;<span class="code_keyword">BETWEEN</span>&#160;<span class="code_ident">d</span>.<span class="code_ident">starttime</span>&#160;<span class="code_keyword">AND</span>&#160;<span class="code_ident">d</span>.<span class="code_ident">endtime</span>
<br><span class="code_keyword">GROUP</span>&#160;<span class="code_keyword">BY</span>&#160;<span class="code_ident">timemoment</span>
<br><span class="code_keyword">ORDER</span>&#160;<span class="code_keyword">BY</span>&#160;<span class="code_ident">cnt</span>&#160;<span class="code_keyword">DESC</span>;
<br><span class="code_comment">--&#160;Time:&#160;91044.799&#160;ms</span>
<br>
<br><span class="code_comment">--&#160;En&#160;deze&#160;procedure&#160;is&#160;zo&#160;klaar:</span>
<br><span class="code_keyword">CREATE</span>&#160;<span class="code_keyword">OR</span>&#160;<span class="code_keyword">REPLACE</span>&#160;<span class="code_keyword">FUNCTION</span>&#160;<span class="code_method">count_max_usage</span>&#160;()&#160;
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">RETURNS</span>&#160;<span class="code_keyword">integer</span>&#160;<span class="code_keyword">AS</span>&#160;$$
<br><span class="code_keyword">DECLARE</span>&#160;
<br>&#160;&#160;&#160;&#160;<span class="code_ident">counter</span>&#160;<span class="code_keyword">INTEGER</span>;
<br>&#160;&#160;&#160;&#160;<span class="code_ident">maxcount</span>&#160;<span class="code_keyword">INTEGER</span>;
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">temp</span>&#160;<span class="code_ident">RECORD</span>;
<br><span class="code_keyword">BEGIN</span>
<br>&#160;&#160;&#160;&#160;<span class="code_ident">maxcount</span>&#160;:=&#160;<span class="code_number">0</span>;
<br>&#160;&#160;&#160;&#160;<span class="code_ident">counter</span>&#160;:=&#160;<span class="code_number">0</span>;
<br>&#160;&#160;&#160;&#160;
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">FOR</span>&#160;<span class="code_keyword">temp</span>&#160;<span class="code_keyword">IN</span>&#160;
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(<span class="code_keyword">SELECT</span>&#160;<span class="code_number">1</span>&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">incr</span>,&#160;<span class="code_ident">starttime</span>&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">tm</span>&#160;<span class="code_keyword">FROM</span>&#160;<span class="code_ident">dateranges</span>
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">UNION</span>&#160;<span class="code_keyword">ALL</span>
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">SELECT</span>&#160;<span class="code_number">-1</span>&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">incr</span>,&#160;<span class="code_ident">endtime</span>&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">tm</span>&#160;<span class="code_keyword">FROM</span>&#160;<span class="code_ident">dateranges</span>)&#160;<span class="code_keyword">ORDER</span>&#160;<span class="code_keyword">BY</span>&#160;<span class="code_ident">tm</span>
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">LOOP</span>
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_ident">counter</span>&#160;:=&#160;<span class="code_ident">counter</span>&#160;+&#160;<span class="code_keyword">temp</span>.<span class="code_ident">incr</span>;
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">IF</span>&#160;<span class="code_ident">counter</span>&#160;&gt;&#160;<span class="code_ident">maxcount</span>&#160;<span class="code_keyword">THEN</span>&#160;
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_ident">maxcount</span>&#160;:=&#160;<span class="code_ident">counter</span>;
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">END</span>&#160;<span class="code_keyword">IF</span>;
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">END</span>&#160;<span class="code_keyword">LOOP</span>;
<br>&#160;&#160;&#160;&#160;
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">RETURN</span>&#160;<span class="code_ident">maxcount</span>;
<br><span class="code_keyword">END</span>&#160;&#160;&#160;&#160;
<br>$$&#160;<span class="code_keyword">LANGUAGE</span>&#160;<span class="code_ident">plpgsql</span>;
<br>
<br><span class="code_keyword">SELECT</span>&#160;<span class="code_method">count_max_usage</span>();
<br><span class="code_comment">--&#160;Time:&#160;89.051&#160;ms</span></code></div></td></tr></table><br>Ik weet niet hoe goed MySQL&#039;s functionele taal is in 5.1, maar die PostgreSQL-functie zou je op zich vrij eenvoudig moeten kunnen vertalen naar een functie in MySQL.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30062723#30062723</guid>
			<pubDate>Tue, 13 May 2008 17:48:14 GMT</pubDate>
		</item>
		<item>
			<title>OnTracK</title>
			<link>http://gathering.tweakers.net/forum/list_message/30062774?data%5Bsource%5D=rss#30062774</link>
			<author>dummy@example.com (OnTracK)</author>
			<description>dinsdag 13 mei 2008 19:59
Ik had een tijdje terug ongeveer hetzelfde nodig, het maximale aantal events op dezelfde dag. Volgens mij moet dat prima toepasbaar zijn op jouw geval.SQL:123456789101112SELECT
&#160;&#160;&#160;&#160;COUNT(DISTINCT&#160;b.id)&#160;AS&#160;nr_conversations
FROM
&#160;&#160;&#160;&#160;call_log&#160;a
&#160;&#160;&#160;&#160;INNER&#160;JOIN&#160;call_log&#160;b&#160;ON&#160;a.van&#160;BETWEEN&#160;b.van&#160;AND&#160;COALESCE(b.tot,&#160;NOW())
WHERE
&#160;&#160;&#160;&#160;1
GROUP&#160;BY
&#160;&#160;&#160;&#160;a.van
ORDER&#160;BY
&#160;&#160;&#160;&#160;nr_conversations&#160;DESC
LIMIT&#160;1Mijn grootste probleem was dat je een soort dubbele group by nodig hebt. Eentje die een count doet van conversaties op dezelfde momenten, en eentje die het maximale nummer van die counts pakt. Dat heb ik opgelost door het maximale nummer te bepalen door een order by + limit 1.

Alleen gezien het aantal ervaren mensen dat hier aangeeft dat het zo goed als onmogelijk is dit met SQL te doen, twijfel ik wel. Iemand die kan bevestigen dat dit werkt?</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 19:59<br />
Ik had een tijdje terug ongeveer hetzelfde nodig, het maximale aantal events op dezelfde dag. Volgens mij moet dat prima toepasbaar zijn op jouw geval.<br><br>SQL:<br><table class="phphighlight"><tr><td class="phphighlightline"><code>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br></code></td><td class="phphighlightcode"><div><code><span class="code_keyword">SELECT</span>
<br>&#160;&#160;&#160;&#160;<span class="code_method">COUNT</span>(<span class="code_keyword">DISTINCT</span>&#160;<span class="code_ident">b</span>.<span class="code_ident">id</span>)&#160;<span class="code_keyword">AS</span>&#160;<span class="code_ident">nr_conversations</span>
<br><span class="code_keyword">FROM</span>
<br>&#160;&#160;&#160;&#160;<span class="code_ident">call_log</span>&#160;<span class="code_ident">a</span>
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">INNER</span>&#160;<span class="code_keyword">JOIN</span>&#160;<span class="code_ident">call_log</span>&#160;<span class="code_ident">b</span>&#160;<span class="code_keyword">ON</span>&#160;<span class="code_ident">a</span>.<span class="code_ident">van</span>&#160;<span class="code_keyword">BETWEEN</span>&#160;<span class="code_ident">b</span>.<span class="code_ident">van</span>&#160;<span class="code_keyword">AND</span>&#160;<span class="code_method">COALESCE</span>(<span class="code_ident">b</span>.<span class="code_ident">tot</span>,&#160;<span class="code_method">NOW</span>())
<br><span class="code_keyword">WHERE</span>
<br>&#160;&#160;&#160;&#160;<span class="code_number">1</span>
<br><span class="code_keyword">GROUP</span>&#160;<span class="code_keyword">BY</span>
<br>&#160;&#160;&#160;&#160;<span class="code_ident">a</span>.<span class="code_ident">van</span>
<br><span class="code_keyword">ORDER</span>&#160;<span class="code_keyword">BY</span>
<br>&#160;&#160;&#160;&#160;<span class="code_ident">nr_conversations</span>&#160;<span class="code_keyword">DESC</span>
<br><span class="code_keyword">LIMIT</span>&#160;<span class="code_number">1</span></code></div></td></tr></table><br>Mijn grootste probleem was dat je een soort dubbele group by nodig hebt. Eentje die een count doet van conversaties op dezelfde momenten, en eentje die het maximale nummer van die counts pakt. Dat heb ik opgelost door het maximale nummer te bepalen door een order by + limit 1.<br>
<br>
Alleen gezien het aantal ervaren mensen dat hier aangeeft dat het zo goed als onmogelijk is dit met SQL te doen, twijfel ik wel. Iemand die kan bevestigen dat dit werkt?]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30062774#30062774</guid>
			<pubDate>Tue, 13 May 2008 17:59:45 GMT</pubDate>
		</item>
		<item>
			<title>ACM</title>
			<link>http://gathering.tweakers.net/forum/list_message/30062813?data%5Bsource%5D=rss#30062813</link>
			<author>dummy@example.com (ACM)</author>
			<description>dinsdag 13 mei 2008 20:08
Als je het probleem omdraait - en dus netjes in Sets gaat denken - kan het wel in SQL.

Het moment met de meeste calls tegelijk, is per definitie als de meest recente call van die specifieke subset begonnen is, totdat de eerstvolgende call daarna eindigt. En dat laatste kan die laatst gestartte call zijn, maar ook een van de anderen waar ie na begon.

Oftewel, voor elke call kijk je binnen hoeveel andere calls zijn begintijd valt, telt er een bij op, sorteerd het omgekeerd en je weet het drukste moment.

Oftewel, in SQL:SQL:12345678910SELECT&#160;
d.starttime,&#160;d.endtime,
(SELECT&#160;COUNT(*)&#160;
&#160;&#160;&#160;&#160;FROM&#160;dateranges&#160;ds
&#160;&#160;&#160;&#160;WHERE&#160;d.starttime
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BETWEEN&#160;ds.starttime&#160;AND&#160;ds.endtime&#160;AND&#160;ds.id&#160;&lt;&gt;&#160;d.id)&#160;+&#160;1&#160;as&#160;cnt
FROM&#160;dateranges&#160;d
GROUP&#160;BY&#160;d.id,&#160;d.starttime,&#160;d.endtime
ORDER&#160;BY&#160;cnt&#160;DESC
LIMIT&#160;1Duurt helaas nog 6 seconden bij mij, maar dat is al een stuk beter dan de 90 voor de eerste aanpak.quote:OnTracK schreef op dinsdag 13 mei 2008 @ 19:59:
[code]Afgezien van de (imho) overbodige DISTINCT en de WHERE-clause, doet die van jou inderdaad wat hier gevraagd wordt. Hij is semantisch min of meer hetzelfde als de mijne.quote:Mijn grootste probleem was dat je een soort dubbele group by nodig hebt. Eentje die een count doet van conversaties op dezelfde momenten, en eentje die het maximale nummer van die counts pakt. Dat heb ik opgelost door het maximale nummer te bepalen door een order by + limit 1.Sja, je kan de boel ook in een nieuwe SELECT verpakken en er een MAX overheen halen... de order by + limit werkt ook prima in MySQL.quote:Alleen gezien het aantal ervaren mensen dat hier aangeeft dat het zo goed als onmogelijk is dit met SQL te doen, twijfel ik wel. Iemand die kan bevestigen dat dit werkt?Het grootste manco dat ik aan de jouwe zie is dat het heel erg impliciet werkt als er maar 1 record is op een dag en dat je het record dat je aan het bekijken bent ook heel impliciet meetelt. Maar afgezien daarvan heb je voor zover ik kan zien inderdaad een oplossing voor het gestelde probleem gepost. Dat manco zou je nog op kunnen lossen door de INNER join naar een LEFT te veranderen, maar je kan het ook goed proberen te onthouden zodat je bij een wijziging van je  ON-clause niet ineens een hele rustige dag (of een korter bereik) verpest </description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 20:08<br />
Als je het probleem omdraait - en dus netjes in Sets gaat denken - kan het <i>wel</i> in SQL.<br>
<br>
Het moment met de meeste calls tegelijk, is per definitie als de meest recente call van die specifieke subset begonnen is, totdat de eerstvolgende call daarna eindigt. En dat laatste kan die laatst gestartte call zijn, maar ook een van de anderen waar ie na begon.<br>
<br>
Oftewel, voor elke call kijk je binnen hoeveel andere calls zijn begintijd valt, telt er een bij op, sorteerd het omgekeerd en je weet het drukste moment.<br>
<br>
Oftewel, in SQL:<br>SQL:<br><table class="phphighlight"><tr><td class="phphighlightline"><code>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br></code></td><td class="phphighlightcode"><div><code><span class="code_keyword">SELECT</span>&#160;
<br><span class="code_ident">d</span>.<span class="code_ident">starttime</span>,&#160;<span class="code_ident">d</span>.<span class="code_ident">endtime</span>,
<br>(<span class="code_keyword">SELECT</span>&#160;<span class="code_method">COUNT</span>(*)&#160;
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">FROM</span>&#160;<span class="code_ident">dateranges</span>&#160;<span class="code_ident">ds</span>
<br>&#160;&#160;&#160;&#160;<span class="code_keyword">WHERE</span>&#160;<span class="code_ident">d</span>.<span class="code_ident">starttime</span>
<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="code_keyword">BETWEEN</span>&#160;<span class="code_ident">ds</span>.<span class="code_ident">starttime</span>&#160;<span class="code_keyword">AND</span>&#160;<span class="code_ident">ds</span>.<span class="code_ident">endtime</span>&#160;<span class="code_keyword">AND</span>&#160;<span class="code_ident">ds</span>.<span class="code_ident">id</span>&#160;&lt;&gt;&#160;<span class="code_ident">d</span>.<span class="code_ident">id</span>)&#160;+&#160;<span class="code_number">1</span>&#160;<span class="code_keyword">as</span>&#160;<span class="code_ident">cnt</span>
<br><span class="code_keyword">FROM</span>&#160;<span class="code_ident">dateranges</span>&#160;<span class="code_ident">d</span>
<br><span class="code_keyword">GROUP</span>&#160;<span class="code_keyword">BY</span>&#160;<span class="code_ident">d</span>.<span class="code_ident">id</span>,&#160;<span class="code_ident">d</span>.<span class="code_ident">starttime</span>,&#160;<span class="code_ident">d</span>.<span class="code_ident">endtime</span>
<br><span class="code_keyword">ORDER</span>&#160;<span class="code_keyword">BY</span>&#160;<span class="code_ident">cnt</span>&#160;<span class="code_keyword">DESC</span>
<br><span class="code_keyword">LIMIT</span>&#160;<span class="code_number">1</span></code></div></td></tr></table><br>Duurt helaas nog 6 seconden bij mij, maar dat is al een stuk beter dan de 90 voor de eerste aanpak.<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30062774#30062774" rel="external" class="messagelink">OnTracK schreef op dinsdag 13 mei 2008 @ 19:59</a>:</b><br>
[code]</div></blockquote>Afgezien van de (imho) overbodige DISTINCT en de WHERE-clause, doet die van jou inderdaad wat hier gevraagd wordt. Hij is semantisch min of meer hetzelfde als de mijne.<blockquote><div>quote:</div><div class="message-quote-div">Mijn grootste probleem was dat je een soort dubbele group by nodig hebt. Eentje die een count doet van conversaties op dezelfde momenten, en eentje die het maximale nummer van die counts pakt. Dat heb ik opgelost door het maximale nummer te bepalen door een order by + limit 1.</div></blockquote>Sja, je kan de boel ook in een nieuwe SELECT verpakken en er een MAX overheen halen... de order by + limit werkt ook prima in MySQL.<blockquote><div>quote:</div><div class="message-quote-div">Alleen gezien het aantal ervaren mensen dat hier aangeeft dat het zo goed als onmogelijk is dit met SQL te doen, twijfel ik wel. Iemand die kan bevestigen dat dit werkt?</div></blockquote>Het grootste manco dat ik aan de jouwe zie is dat het heel erg impliciet werkt als er maar 1 record is op een dag en dat je het record dat je aan het bekijken bent ook heel impliciet meetelt. Maar afgezien daarvan heb je voor zover ik kan zien inderdaad een oplossing voor het gestelde probleem gepost. Dat manco zou je nog op kunnen lossen door de INNER join naar een LEFT te veranderen, maar je kan het ook goed proberen te onthouden zodat je bij een wijziging van je  ON-clause niet ineens een hele rustige dag (of een korter bereik) verpest <img src="http://gathering.tweakers.net/global/smileys/wink.gif" width="15"  height="15" alt=";)" class="smiley">]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30062813#30062813</guid>
			<pubDate>Tue, 13 May 2008 18:08:08 GMT</pubDate>
		</item>
		<item>
			<title>OnTracK</title>
			<link>http://gathering.tweakers.net/forum/list_message/30062860?data%5Bsource%5D=rss#30062860</link>
			<author>dummy@example.com (OnTracK)</author>
			<description>dinsdag 13 mei 2008 20:17
quote:[b][message=30062813,noline]

[...]

Afgezien van de (imho) overbodige DISTINCT en de WHERE-clause, doet die van jou inderdaad wat hier gevraagd wordt. Hij is semantisch min of meer hetzelfde als de mijne.Komt omdat ik in mijn oorspronkelijke query wel wat meer join&#039;de en selecteerde, ik had even geen zin om uit te pluizen wat er nou ook alweer precies nodig was. En of een WHERE in MySQL nou verplicht was...

Mijn oorspronkelijk query had natuurlijk een iets ander doel. Daarom was ik ook niet zeker of deze toepasbaar was.quote:[...]

Sja, je kan de boel ook in een nieuwe SELECT verpakken en er een MAX overheen halen... de order by + limit werkt ook prima in MySQL.Dat werkt (voor zover ik weet) niet in MySQL (misschien alleen MySQL 4?)</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 20:17<br />
<blockquote><div>quote:</div><div class="message-quote-div">[b][message=30062813,noline]<br>
<br>
[...]<br>
<br>
Afgezien van de (imho) overbodige DISTINCT en de WHERE-clause, doet die van jou inderdaad wat hier gevraagd wordt. Hij is semantisch min of meer hetzelfde als de mijne.</div></blockquote>Komt omdat ik in mijn oorspronkelijke query wel wat meer join&#039;de en selecteerde, ik had even geen zin om uit te pluizen wat er nou ook alweer precies nodig was. En of een WHERE in MySQL nou verplicht was...<br>
<br>
Mijn oorspronkelijk query had natuurlijk een iets ander doel. Daarom was ik ook niet zeker of deze toepasbaar was.<blockquote><div>quote:</div><div class="message-quote-div">[...]<br>
<br>
Sja, je kan de boel ook in een nieuwe SELECT verpakken en er een MAX overheen halen... de order by + limit werkt ook prima in MySQL.</div></blockquote>Dat werkt (voor zover ik weet) niet in MySQL (misschien alleen MySQL 4?)]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30062860#30062860</guid>
			<pubDate>Tue, 13 May 2008 18:17:43 GMT</pubDate>
		</item>
		<item>
			<title>ACM</title>
			<link>http://gathering.tweakers.net/forum/list_message/30062907?data%5Bsource%5D=rss#30062907</link>
			<author>dummy@example.com (ACM)</author>
			<description>dinsdag 13 mei 2008 20:28
quote:OnTracK schreef op dinsdag 13 mei 2008 @ 20:17:
Dat werkt (voor zover ik weet) niet in MySQL (misschien alleen MySQL 4?)Subqueries werken vanaf 4.1, maar zelfs nu in 5.0 nog niet helemaal soepeltjes. Dus jouw variant is waarschijnlijk sneller in MySQL. Maar &#039;SELECT MAX(foo.cnt) FROM (SELECT count(b.id) as cnt FROM ...) as foo&#039; zou wel al sinds 4.1.0 ofzo moeten werken.

Als je nu nog aan 3.x of 4.0 vast zou je bij je provider/sysadmin aan de bel moeten trekken. De performance van 4.1 en 5.0 zijn aardig beter en de veiligheid van die twee deprecated versies zal ook wel wat te wensen overlaten.

En ik heb nog nooit gehoord van een verplichte WHERE in MySQL. Zelfs de FROM is dat niet.</description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 20:28<br />
<blockquote><div>quote:</div><div class="message-quote-div"><b><a href="http://gathering.tweakers.net/forum/list_message/30062860#30062860" rel="external" class="messagelink">OnTracK schreef op dinsdag 13 mei 2008 @ 20:17</a>:</b><br>
Dat werkt (voor zover ik weet) niet in MySQL (misschien alleen MySQL 4?)</div></blockquote>Subqueries werken vanaf 4.1, maar zelfs nu in 5.0 nog niet helemaal soepeltjes. Dus jouw variant is waarschijnlijk sneller in MySQL. Maar &#039;SELECT MAX(foo.cnt) FROM (SELECT count(b.id) as cnt FROM ...) as foo&#039; zou wel al sinds 4.1.0 ofzo moeten werken.<br>
<br>
Als je nu nog aan 3.x of 4.0 vast zou je bij je provider/sysadmin aan de bel moeten trekken. De performance van 4.1 en 5.0 zijn aardig beter en de veiligheid van die twee deprecated versies zal ook wel wat te wensen overlaten.<br>
<br>
En ik heb nog nooit gehoord van een verplichte WHERE in MySQL. Zelfs de FROM is dat niet.]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30062907#30062907</guid>
			<pubDate>Tue, 13 May 2008 18:28:58 GMT</pubDate>
		</item>
		<item>
			<title>OnTracK</title>
			<link>http://gathering.tweakers.net/forum/list_message/30062974?data%5Bsource%5D=rss#30062974</link>
			<author>dummy@example.com (OnTracK)</author>
			<description>dinsdag 13 mei 2008 20:42
quote:En ik heb nog nooit gehoord van een verplichte WHERE in MySQL. Zelfs de FROM is dat niet.Komt natuurlijk door dat PHPmyadmin, die altijd een WHERE 1 erin gooit als je niets specificeert.  Ik leer verder ook maar on-the-fly.

We (roeivereniging Gyas) zitten overigens op MySQL 4.1.nogwat, maar dat is ook niet mijn verantwoordelijkheid. </description>
			<content:encoded><![CDATA[dinsdag 13 mei 2008 20:42<br />
<blockquote><div>quote:</div><div class="message-quote-div">En ik heb nog nooit gehoord van een verplichte WHERE in MySQL. Zelfs de FROM is dat niet.</div></blockquote>Komt natuurlijk door dat PHPmyadmin, die altijd een WHERE 1 erin gooit als je niets specificeert. <img src="http://gathering.tweakers.net/global/smileys/wink.gif" width="15"  height="15" alt=";)" class="smiley"> Ik leer verder ook maar on-the-fly.<br>
<br>
We (roeivereniging Gyas) zitten overigens op MySQL 4.1.nogwat, maar dat is ook niet mijn verantwoordelijkheid. <img src="http://gathering.tweakers.net/global/smileys/puh2.gif" width="15"  height="15" alt=":P" class="smiley">]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/30062974#30062974</guid>
			<pubDate>Tue, 13 May 2008 18:42:12 GMT</pubDate>
		</item>
	</channel>
</rss>