abonnement bol.com Unibet Coolblue
pi_105638836
quote:
Ik denk dat er geen index op orders.orderdate staat. Een index daar zal helpen. En verder wat GlowMouse zegt.
  FOK!-Schrikkelbaas vrijdag 16 december 2011 @ 08:34:56 #277
1972 Swetsenegger
Egocentrische Narcist
pi_105646453
quote:
0s.gif Op donderdag 15 december 2011 23:15 schreef GlowMouse het volgende:
Schrijf gewoon COUNT(*), zet een index op order_content.product_id en kijk naar ansi style joins
ANSI ken ik alleen van BBS systemen, glowmouse ;-) Ik ga er mee aan de slag en hou jullie op de hoogte.

order_content.product_id had ik ondertussen een index opgezet maar dat helpt niet echt.
pi_105650281
quote:
0s.gif Op woensdag 14 december 2011 10:13 schreef _Flash_ het volgende:
Ik vind het maar een riskante methode. Kom je niet in de problemen als er bijvoorbeeld meerdere mensen tegelijk willen inloggen, de processorkracht verdeeld wordt over die berekeningen en ze dus allemaal de juiste diepte niet halen? Soort van oplossing is natuurlijk wel om het aantal gebruikte loopjes ook in de tabel op te slaan, dan hoef je niet met die factor anderhalf te werken ;-)
Dat is inderdaad een goede oplossing :P Je zou het ook clientside kunnen doen via javascript. Als je wilt inloggen vul je eerst het email adres in. Dat wordt het aantal loops opgehaald dat bij het email adres hoort en vervolgens wordt de boel (e-mail + ww) x aantal keer gehashed en naar de server verstuurd. via deze manier is een challenge response systeem ook mogelijk :7
..///
  FOK!-Schrikkelbaas vrijdag 16 december 2011 @ 17:47:54 #279
1972 Swetsenegger
Egocentrische Narcist
pi_105663478
quote:
0s.gif Op vrijdag 16 december 2011 08:34 schreef Swetsenegger het volgende:

[..]

ANSI ken ik alleen van BBS systemen, glowmouse ;-) Ik ga er mee aan de slag en hou jullie op de hoogte.

order_content.product_id had ik ondertussen een index opgezet maar dat helpt niet echt.
Ik zit met de aanpassingen nog steeds op een query van 57 seconden. Ik heb alleen de ANSI join nog niet gedaan
pi_105669714
Misschien meer een logica vraag dan php, maar goed:

Ik heb gister met php en mysql een systeem gebouwd om lootjes te trekken. We hebben 5 personen in de database en bij elk lootje dat getrokken wordt, wordt die naam verwijderd.
Uiteraard zorg ik ervoor met code dat niemand zichzelf kan trekken. Echter een probleem weet ik niet zo snel op te lossen.

A trekt B
B trekt A
C trekt D
D trekt C

Persoon E kan dus niemand trekken. Nu kunnen we het net zo lang proberen dat het wel goed gaat, maar vind het mooier om zoiets te voorkomen met code. Iemand een suggestie?
  vrijdag 16 december 2011 @ 20:55:46 #281
84244 Scorpie
Abject en infaam!
pi_105670803
Ik snap het probleem niet helemaal.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
pi_105670857
quote:
0s.gif Op vrijdag 16 december 2011 20:55 schreef Scorpie het volgende:
Ik snap het probleem niet helemaal.
Dat hij een manier zoekt om iedereen aan een andere willekeurige persoon te koppelen.
Je hebt 5 personen, en iedereen is aan iemand gekoppeld, maar niet aan zichzelf.

Hoe doe je dat het beste, proberen totdat je de goede combi hebt, of is daar een soort algoritme voor.

Dat is zijn vraag.
💍 💍 💍 💍 💍 💍 🍌 ☎
pi_105670978
Klopt helemaal
  vrijdag 16 december 2011 @ 21:05:33 #284
84244 Scorpie
Abject en infaam!
pi_105671318
quote:
0s.gif Op vrijdag 16 december 2011 20:56 schreef Pizzalucht het volgende:

[..]

Dat hij een manier zoekt om iedereen aan een andere willekeurige persoon te koppelen.
Je hebt 5 personen, en iedereen is aan iemand gekoppeld, maar niet aan zichzelf.

Hoe doe je dat het beste, proberen totdat je de goede combi hebt, of is daar een soort algoritme voor.

Dat is zijn vraag.
Oh zo. Maak gewoon een resultset op basis van alle id`s van de gebruikers, minus je eigen, en laat hem daar 1tje van kiezen?
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
pi_105671823
Ter info. Ik heb iedereen de url gegeven. Iedereen trekt het lootje wanneer diegene wil. De persoon selecteert zijn eigen naam en het systeem bekijkt dan in de database wie er nog in zit, en daaruit kiest hij de naam <> eigen naam. Als er nog maar een naam inzit en die is van diegene zelf, dan gaat het fout.
  vrijdag 16 december 2011 @ 21:21:59 #286
84244 Scorpie
Abject en infaam!
pi_105672190
A heeft als optie B,C,D,E
B heeft als optie A,C,D,E
C heeft als optie A,B,D,E
D heeft als optie A,B,C,E
E heeft als optie A,B,C,D

Hoe kan hij zichzelf kiezen dan?
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
pi_105677168
Het gaat mis omdat als E aan de beurt is mogelijk alle opties al vergeven zijn.

Het kan zo verlopen:

A trekt B
B trekt A
C trekt D
D trekt C

E trekt?
  vrijdag 16 december 2011 @ 23:32:38 #288
75592 GlowMouse
l'état, c'est moi
pi_105678552
quote:
0s.gif Op vrijdag 16 december 2011 21:15 schreef das_phantom het volgende:
Ter info. Ik heb iedereen de url gegeven. Iedereen trekt het lootje wanneer diegene wil. De persoon selecteert zijn eigen naam en het systeem bekijkt dan in de database wie er nog in zit, en daaruit kiest hij de naam <> eigen naam. Als er nog maar een naam inzit en die is van diegene zelf, dan gaat het fout.
niet pas trekken als iemand de url aanroept, of bij het een na laatste loodje zorgen dat je niet in een foute situatie komt
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_105678609
Oplossing voor dat lootjes trekken.

Zet de personen in een random volgorde. Bijvoorbeeld:

edacb

En elke persoon krijgt de volgende persoon in de array:

e krijgt d
d krijgt a
a krijgt c
c krijgt b

en bij b is er geen volgende daarom krijgt hij de eerste uit de array: e

zo; en nu weekend
pi_105683052
Goede suggesties. Ik ga er mee aan de slag!
pi_105686848
bij lootjestrekken.nl moet iedereen eerst "deelnemen" (+verlanglijstje invullen kan ook), daarna regelt de site het lootjes trekken en stuurt iedereen een link
is dat niet waar je naar opzoek bent?
pi_105687577
quote:
0s.gif Op vrijdag 16 december 2011 23:33 schreef ErikNijland het volgende:
Oplossing voor dat lootjes trekken.

Zet de personen in een random volgorde. Bijvoorbeeld:

edacb

En elke persoon krijgt de volgende persoon in de array:

e krijgt d
d krijgt a
a krijgt c
c krijgt b

en bij b is er geen volgende daarom krijgt hij de eerste uit de array: e

zo; en nu weekend
Wat nou als randomizen van personen dezelfde lijst oplevert als je lijst waar je aan gaat koppelen? Dan krijgt iedereen zichzelf :P

Ik zou een functie (class liever) maken die bijhoudt welke personen meedoen, random persoon toewijst aan iemand en daarbij rekening houdt dat het niet persoon is waar die aan toe wordt gewezen.
  FOK!-Schrikkelbaas zaterdag 17 december 2011 @ 15:31:10 #293
1972 Swetsenegger
Egocentrische Narcist
pi_105693953
quote:
0s.gif Op vrijdag 16 december 2011 17:47 schreef Swetsenegger het volgende:

[..]

Ik zit met de aanpassingen nog steeds op een query van 57 seconden. Ik heb alleen de ANSI join nog niet gedaan
Iemand nog een idee?
  zaterdag 17 december 2011 @ 15:50:02 #294
218617 YazooW
bel de wouten!
pi_105694464
quote:
0s.gif Op zaterdag 17 december 2011 11:24 schreef Pakspul het volgende:

[..]

Wat nou als randomizen van personen dezelfde lijst oplevert als je lijst waar je aan gaat koppelen? Dan krijgt iedereen zichzelf :P

Ik zou een functie (class liever) maken die bijhoudt welke personen meedoen, random persoon toewijst aan iemand en daarbij rekening houdt dat het niet persoon is waar die aan toe wordt gewezen.
Het is niet zo dat hij 2 lijsten gaat koppelen. Hij heeft 1 lijst met personen a,b,c,d en e.
Die lijst randomized hij, dus abcde wordt bijvoorbeeld bdcae. Vervolgens wordt de eerste letter gekoppeld aan de tweede, de tweede aan de derde, de derde aan de vierde, etc etc. Dus ongeacht of het randomizen iets heeft opgeleverd kan je nooit jezelf loten.
  FOK!-Schrikkelbaas zaterdag 17 december 2011 @ 16:01:02 #295
1972 Swetsenegger
Egocentrische Narcist
pi_105694771
1
2
3
4
5
6
7
SELECT produkten.*, count(*) as productcount
FROM produkten, order_content
JOIN orders on (orders.order_id=order_content.order_id)
WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0')
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 5

Deze lijkt m'n probleem op te lossen :)
  zaterdag 17 december 2011 @ 19:13:30 #296
75592 GlowMouse
l'état, c'est moi
pi_105700576
twee join stijlen door elkaar, lelijk hoor
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas zaterdag 17 december 2011 @ 19:19:25 #297
1972 Swetsenegger
Egocentrische Narcist
pi_105700742
quote:
0s.gif Op zaterdag 17 december 2011 19:13 schreef GlowMouse het volgende:
twee join stijlen door elkaar, lelijk hoor
:D jajaja

1
2
3
4
5
6
7
8
SELECT produkten.*, count(*) as productcount
FROM order_content
JOIN orders on (orders.order_id=order_content.order_id)
JOIN produkten on (produkten.product_id=order_content.product_id)
WHERE produkten.product_id = order_content.product_id AND produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0')
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 5

Zo dan.
  zaterdag 17 december 2011 @ 19:34:03 #298
75592 GlowMouse
l'état, c'est moi
pi_105701239
Je WHERE is nog te uitgebreid. Deze query zou ook niet sneller draaien dan de eerste.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas zaterdag 17 december 2011 @ 19:46:42 #299
1972 Swetsenegger
Egocentrische Narcist
pi_105701732
quote:
0s.gif Op zaterdag 17 december 2011 19:34 schreef GlowMouse het volgende:
Je WHERE is nog te uitgebreid. Deze query zou ook niet sneller draaien dan de eerste.
Deze query draait in 37ms, mijn eerste zonder ANSI join in 57 seconden.

Of bedoel je dat deze tov de vorige niet sneller draait? Dat klopt. Maar hoe kan ik de where clausule korter maken? Dit zijn de voorwaarden.

-edit-

duh

1
2
3
4
5
6
7
8
SELECT produkten.*, count(*) as productcount
FROM order_content
JOIN orders on (orders.order_id=order_content.order_id)
JOIN produkten on (produkten.product_id=order_content.product_id)
WHERE produkten.product_menu IS NOT NULL AND produkten.product_menu<>0 AND orders.wishlist=0 AND orders.activated=1 AND orders.orderdate between ('2011-01-01 0:0:0') AND ('2012-01-01 0:0:0')
GROUP BY produkten.product_id
ORDER BY productcount DESC
LIMIT 0, 5
  zaterdag 17 december 2011 @ 20:20:17 #300
75592 GlowMouse
l'état, c'est moi
pi_105703028
De joinvolgorde zal wel gewijzigd zijn, ANSI vs. theta-style heeft geen invloed.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
abonnement bol.com Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')