Zover ik weet voert hij eerst de sub query uit, en zet het resultaat daar van in IN. 2 queries afaik. Kan er totaal naast zitten. Jammer dat JortK op vakantie is die weet behoorlijk wat van SQL afquote:Op dinsdag 24 juli 2007 23:25 schreef Geqxon het volgende:
Maar dan moet hij dus (in mijn geval) 6621 keer een select query uitvoeren? Ik heb wat moeite een testcase op te zetten, maar zo uit mijn hoofd lijkt dit niet bijster veel rapper.
1 2 3 | LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL; |
Puur SQL, of ook met PHP?quote:Op woensdag 25 juli 2007 01:09 schreef wonderer het volgende:
Hoe kan ik uitvogelen hoeveelste in een resultset een bepaald record is? Bijvoorbeeld "select from producten where klant_id='1'" en dan wil ik weten hoeveelste de barbecue is in die lijst. Is daar iets makkelijks voor?
Ook met PHP.quote:
quote:
1 2 3 4 5 6 7 8 9 | $i = 0; $result = executequery("blablabla"); while($row = fetchrow($result)) { $i++; echo($i . "e reccord:" . $row); } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $result = mysql_query("SELECT product FROM producten WHERE klant_id='1"); $i = 0; while ($row = mysql_fetch_assoc($result)){ if ($row['product'] == "Barbecue"){ $row_number = $i; break(); } $i++; } if (isset($row_number)){ echo "Barbecue was nummer " . $row_number . " op de lijst."; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | require_once('anotherclass.php'); class Baap { private $linkie; public function doSomething() { echo "zomg "; var_dump($linkie); } public function __construct() { $linkie = new AnotherClass(); var_dump($linkie); echo "<br>"; } } ?> |
self::linkie ipv $linkiequote:Op woensdag 25 juli 2007 10:03 schreef DikkeSmikkel het volgende:
Ik heb niet echt een vraag over MySQL maar wel één over PHP dus... ik verwacht dat-ie hier wel mag of niet?
Ik ben een beetje met classes aan het rommelen maar ik zie net iets over het hoofd waardoor het niet werkt...Kortom, tijd voor meer ogen.
[ code verwijderd ]
Ik heb dus twee classes waarvan er één in een include zit (en dus bovenin wordt eengeroepen). Nu heb ik dus in de __construct() dat-ie de tweede classe initialiseert en deze in de private variabele pleurt. Of tenminste dat wil ik, PHP denkt daar kennelijk anders over want in de functie doSomething is $linkie dus NULL. Ik ben al waar meer aan het proberen geweest maar ik zie 't niet meer...Kan iemand ff een aanwijzing geven?
Bedankt voor je snelle antwoord!quote:Op woensdag 25 juli 2007 10:09 schreef WyriHaximus het volgende:
[..]
self::linkie ipv $linkie. Omdat linkie een member is van je class kan je hem niet als een gewonen $var opschrijven maar moet je aangeven dat je de member wilt self::var
. Of en $this->linkie kan ook maar dat vind hij niet leuk als je in je constructor zit
.
Ow en dit is het PHP en/of (My)SQL topic dus PHP dingen zijn nooit een probleem.
De __contructor wordt toch maar 1x uitgevoerd toch?quote:Op woensdag 25 juli 2007 10:22 schreef Geqxon het volgende:
In de constructor een nieuwe klasse definieëren, pas je wel op dat je geen lus krijgt?
Als je in de constructor van "Auto" een nieuw "Auto" object aan maakt, krijg je een aardige lus.quote:Op woensdag 25 juli 2007 10:28 schreef DikkeSmikkel het volgende:
[..]
De __contructor wordt toch maar 1x uitgevoerd toch?
quote:Op woensdag 25 juli 2007 10:27 schreef DikkeSmikkel het volgende:
[..]
Bedankt voor je snelle antwoord!Ik ga even verder puzzelen. Als ik er niet uit kom dan merk je dat vanzelf...
![]()
Niet als je in de constructor van de class waar je in zit die zelfde class ook weer initialiseerdquote:Op woensdag 25 juli 2007 10:28 schreef DikkeSmikkel het volgende:
[..]
De __contructor wordt toch maar 1x uitgevoerd toch?
Nee ok dan wel, maargoed dan is zit het geheel wel heel brak in elkaar.quote:Op woensdag 25 juli 2007 10:35 schreef WyriHaximus het volgende:
Niet als je in de constructor van de class waar je in zit die zelfde class ook weer initialiseerd. Dan krijg je een loop
.
1 2 3 | $var = new AnotherClass(); ?> |
1 2 3 | self::$linkie = new AnotherClass(); ?> |
1 2 3 | private static $linkie; ?> |
1 2 3 | var_dump(self::$message); ?> |
Met een LEFT JOIN met een IS NOT NULL op de gekoppelde tabel zeg je eigenlijk 'ik wil alle waarden van de gekoppelde tabellen die bestáán', en dat is dus gewoon een INNER JOINquote:Op dinsdag 24 juli 2007 22:19 schreef Geqxon het volgende:
Weer een performance vraag, maar deze keer eentje met een groter effect. Alsin: 0.2 seconden versus 8 seconden.
Een simpele query, met een LEFT JOIN op een bookmarktabel. Nu wil ik dus graag alle nieuwsartikelen zien die de user gebookmarked heeft. Dus hop, de LEFT JOIN, en dan op de koppelende ID van de bookmarktabel een IS NOT NULL. Gaat zelfs over duizenden nieuwsartikelen prima, supersnel dus.
Nu wil ik zien welke nieuwsartikelen de user niet gebookmarked heeft. (For the record: Dit zijn er minder dan de wel gebookmarkte nieuwsartikelen). Dit doe ik door een IS NULL op het koppelend ID van de bookmark tabel te zetten. Probleem dus: Dit gaat vreselijk traag...
Zou dit misschien sneller op te lossen zijn? Ik weet dat JOINS traag kunnen zijn, en hiermee is dat duidelijk te zien.
Een INNER JOIN is een goede, ik bouw mijn querys altijd met MySQL PHP op waardoor ik nog niet zo "dynamisch" dacht.quote:Op woensdag 25 juli 2007 12:45 schreef JeRa het volgende:
[..]
Met een LEFT JOIN met een IS NOT NULL op de gekoppelde tabel zeg je eigenlijk 'ik wil alle waarden van de gekoppelde tabellen die bestáán', en dat is dus gewoon een INNER JOINwat betreft de performance: heb je wel indices op de keys in beide tabellen? (dus in tabel 1 op de primary key, en in tabel 2 op de foreign key)
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |