Zoiets?quote:Op woensdag 5 december 2007 21:59 schreef Geqxon het volgende:
Een enorm simpele vraag...
1 2 3 4 5 | FROM client AS c WHERE c.DateAdded != 0 OR c.DateUpdated != 0 ORDER BY (CASE c.DateUpdated WHEN 0 THEN c.DateAdded ELSE c.DateAdded END) DESC LIMIT ".$max." |
Er zijn clients zonder aanmaakdatum, dit is uit een oude systeemmigratie. Om deze uit het logboek te vermijden staat er deze CASE bij.quote:Op woensdag 5 december 2007 23:25 schreef SuperRembo het volgende:
[..]
Zoiets?
[ code verwijderd ]
Warom zijn die datum niet gewoon NULL als er geen datum in staat? (Dan kan je ook gewoon IFNULL gebruiken in plaats van die CASE).
Zijn er ook clients die niet toegevoegd zijn (DateAdded = 0)?
Is het niet handiger om de DateUpdated bij het toevoegen gelijk te maken aan DateAdded? (Dat sorteert makkelijker en sneller)
Dan moet je gewoon een union / union all gebruiken.quote:Op woensdag 5 december 2007 23:31 schreef Farenji het volgende:
Ongetest:
zorg dat in elke query de kolomnamen hetzelfde zijn en zet alle queries onderaan in 1 string, gescheiden door puntkomma.Voor deze string uit. Als het goed is heb je dan alles in 1 recordset.
quote:Op woensdag 5 december 2007 23:31 schreef Farenji het volgende:
Ongetest:
zorg dat in elke query de kolomnamen hetzelfde zijn en zet alle queries onderaan in 1 string, gescheiden door puntkomma.Voor deze string uit. Als het goed is heb je dan alles in 1 recordset.
Top! Union was exact wat ik zocht. Dank u.quote:Op donderdag 6 december 2007 00:12 schreef SuperRembo het volgende:
[..]
Dan moet je gewoon een union / union all gebruiken.
Als je zowel de laatste 5 toevoegingen en de laatste 5 wijzigingen wilt zien dan heb je minimaal 2 queries nodig, omdat je niet kunt sorteren op 2 dingen. Als je een toevoeging ook als een wijziging beschouwt (en bij toevoegen dus wijzigdatum en toevoegdatum gelijk maakt) dan kun je met 1 query toe.quote:Op woensdag 5 december 2007 21:59 schreef Geqxon het volgende:
Ik kan natuurlijk in een loop gaan werken, maar ik vind het het mooist om zo veel als mogelijk in de query te doen, en dat in één keer in een array te stoppen. Of kan dit niet?
Het totaalproduct, mocht dat het duidelijker maken. Het product van drie (in de applicatie vijftien) verschillende queries:quote:Op donderdag 6 december 2007 00:31 schreef Light het volgende:
[..]
Als je zowel de laatste 5 toevoegingen en de laatste 5 wijzigingen wilt zien dan heb je minimaal 2 queries nodig, omdat je niet kunt sorteren op 2 dingen. Als je een toevoeging ook als een wijziging beschouwt (en bij toevoegen dus wijzigdatum en toevoegdatum gelijk maakt) dan kun je met 1 query toe.
Hoe je bij 15 queries komt is me niet helemaal duidelijk.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | | Description | Date | +-----------------------------------+------------+ | Added client x to company y | 05-12-2007 | | Added client a to company y | 04-12-2007 | | Added client d to company y | 03-12-2007 | | Added client c to company y | 02-12-2007 | | Added client b to company z | 02-12-2007 | | Added company y | 01-12-2007 | | Added company ... | 30-10-2007 | | Added company ... | 30-10-2007 | | Added company ... | 11-07-2007 | | Added company ... | 05-03-2007 | | Changed information on company y | 02-12-2007 | +-----------------------------------+------------+ |
1 2 3 4 | $query = mysql_query("SELECT * FROM vrijwilligers_gegevens WHERE YEAR(datum) = YEAR('$jaar') AND geslacht = '$geslacht' AND nationaliteit = '$nationaliteit' AND YEAR(geboortedatum) = YEAR('$geboortedatum')"); ?> |
1 2 3 4 5 6 7 8 9 | if(isset($year)){ $query_where.=" AND year(datum)='".mysql_real_escape_string($year)."'"; } if(isset($geslacht)){ $query_where.=" AND geslacht='".mysql_real_escape_string($geslacht)."'"; } $query=mysql_query("SELECT * FROM vrijwilligers_gegevens WHERE bla=bla".$query_where); ?> |
Klopt, die van mij had nog iets beter gekundquote:Op woensdag 5 december 2007 14:13 schreef autocue het volgende:
[..]
Het kan in ieder geval ietsje korter. Qua snelheid zou de volgende het denk ik moeten winnen, maar niet omdat het écht efficienter is.
[ code verwijderd ]
Als het overigens relatief vaak voorkomt dat een stuk tekst geen 'spatie kolom' heeft, dan zou jouw aanpak een stuk sneller kunnen worden (en zijn dan deze) wanneer je stopt met zoeken bij het vinden van een regel met $inMin == 0.
Vraagje; hoe zou je kunnen controlleren of een regel leeg is? in de zin van er zit een enter in je codequote:Op woensdag 5 december 2007 14:13 schreef autocue het volgende:
[..]
Het kan in ieder geval ietsje korter :P. Qua snelheid zou de volgende het denk ik moeten winnen, maar niet omdat het écht efficienter is.
[ code verwijderd ]
Als het overigens relatief vaak voorkomt dat een stuk tekst geen 'spatie kolom' heeft, dan zou jouw aanpak een stuk sneller kunnen worden (en zijn dan deze) wanneer je stopt met zoeken bij het vinden van een regel met $inMin == 0.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | moi hoi lol test test test tes hello world moi hoi lol test test test tes"; |
Wat dan als er alleen een spatie op een regel staat, dan matcht ie al niet meer maar het is wel een lege regel.quote:Op donderdag 6 december 2007 20:47 schreef HuHu het volgende:
Matchen op een dubbele \n, dus \n\n.
Ik heb uit mijn css een regeltje bovenaan weggehaald waar iets over utf-8 stond.. Dat heb ik er uit gehaald. Nu zie ik geen problemen meer.quote:Op woensdag 5 december 2007 11:30 schreef JortK het volgende:
[..]
Dat wordt volgens mij een lastig verhaal
Door (bijvoorbeeldquote:Op donderdag 6 december 2007 20:17 schreef Chandler het volgende:
[..]
Vraagje; hoe zou je kunnen controlleren of een regel leeg is? in de zin van er zit een enter in je code
(voorbeeld)
[ code verwijderd ]
Nu zie je opeens een 'lege' regel.. die moet je dus overslaan? maar hoe kan ik die afvangen?
";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function ltrimSpaceColumns($in) { if(preg_match_all('|^( *)\S|m', $in, $matches)) { $min = 0x7fffffff; while(($pair = each($matches[1])) && $min > 0) { if(($newMin = strlen($pair[1])) < $min) { $min = $newMin; } } if($min > 0) { $in = preg_replace('|^ {'.$min.'}|m', '', $in); } } return $in; } ?> |
Werkt idd helemaal perfect, nu heb ik nog 1 andere vraag.quote:Op vrijdag 7 december 2007 00:41 schreef autocue het volgende:
[..]
Door (bijvoorbeeld) te forceren dat de matches waarbij de lengte van de whitespace gecheckt wordt niet enkel whitespace is. Er zal dus een niet whitespace karakter moeten volgen na de spaties, dus alleen de regex zal aangepast moeten worden en er moet verwezen worden naar een andere matching groep (namelijk die voor de spaties). Zoals volgt ongeveer
.
[ code verwijderd ]
Daar zou ik dan maar eens wat aan doen, een programmeur kan niet zonder.quote:Op vrijdag 7 december 2007 10:37 schreef Chandler het volgende:
* Chandler verstopt zich, snapt amper een bal van regex...
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |