abonnement Unibet Coolblue Bitvavo
  dinsdag 27 oktober 2015 @ 13:51:21 #76
37634 wobbel
Da WoBBeL King
pi_157133913
Ik heb weer 'n kut vraag...hoe doe ik een join maar dan omgekeerd :P

Tabel 1: Klanten met een klant ID

Tabel 2: Bestellingen gekoppeld aan klant ID

Ik wil nu alle klanten krijgen die géén bestelling hebben. Doe ik dit ook gewoon met een JOIN ofzo? Want die moet ik altijd koppelen op de ID's en dat wil ik nu juist niet -O-
pi_157134356
quote:
0s.gif Op dinsdag 27 oktober 2015 13:51 schreef wobbel het volgende:
Ik heb weer 'n kut vraag...hoe doe ik een join maar dan omgekeerd :P

Tabel 1: Klanten met een klant ID

Tabel 2: Bestellingen gekoppeld aan klant ID

Ik wil nu alle klanten krijgen die géén bestelling hebben. Doe ik dit ook gewoon met een JOIN ofzo? Want die moet ik altijd koppelen op de ID's en dat wil ik nu juist niet -O-
Je kunt een LEFT JOIN gebruiken.
Voor rijen die niet gekoppeld konden worden krijg je NULL terug waarop je kunt filteren.
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
pi_157134454
quote:
0s.gif Op dinsdag 27 oktober 2015 13:51 schreef wobbel het volgende:
Ik heb weer 'n kut vraag...hoe doe ik een join maar dan omgekeerd :P

Tabel 1: Klanten met een klant ID

Tabel 2: Bestellingen gekoppeld aan klant ID

Ik wil nu alle klanten krijgen die géén bestelling hebben. Doe ik dit ook gewoon met een JOIN ofzo? Want die moet ik altijd koppelen op de ID's en dat wil ik nu juist niet -O-
Jawel, je wilt wel joinen op id's, maar daarna wil je alle regels waar die join resultaten oplevert er weer uit filteren.
Zoals Aether hierboven ook zegt:

1
2
3
4
SELECT klant.*
FROM klant
    LEFT JOIN bestelling ON klant.id = bestelling.klant_id
WHERE bestelling.id IS NULL;
pi_157134834
quote:
7s.gif Op dinsdag 27 oktober 2015 14:12 schreef Aether het volgende:

[..]

Je kunt een LEFT JOIN gebruiken.
Voor rijen die niet gekoppeld konden worden krijg je NULL terug waarop je kunt filteren.
Je kan dan beter WHERE NOT EXISTS() gebruiken.

SELECT K.ID
FROM Klanten AS K
WHERE NOT EXISTS ( SELECT 1 FROM Bestellingen AS B WHERE B.KlantID=K.ID )
  woensdag 28 oktober 2015 @ 16:50:38 #80
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_157161864
Ik heb een pagina buiten de webroot staan waarin een form action voorkomt die verwijst naar een php-scriptje dat ook buiten de webroot staat.

De situatie is als volgt:
- Webroot
- Anderefolder -> (pagina.php met <form action=script.php>), script.php.

Pagina.php zet ik liever niet in de webroot. Kan ik een verwijzing maken vanuit die andere map?
pi_157164929
quote:
19s.gif Op dinsdag 27 oktober 2015 14:37 schreef TwenteFC het volgende:

[..]

Je kan dan beter WHERE NOT EXISTS() gebruiken.

SELECT K.ID
FROM Klanten AS K
WHERE NOT EXISTS ( SELECT 1 FROM Bestellingen AS B WHERE B.KlantID=K.ID )
Dan heb je een dependant subquery en waarschijnlijk minder optimalisatiemogelijkheden. Bij kleine aantallen (tientallen) maakt dat niet uit, bij grotere aantallen klanten en/of bestellingen zou ik het eerst vergelijken om te zien welke oplossing beter presteert.
pi_157167064
quote:
0s.gif Op woensdag 28 oktober 2015 16:50 schreef Ser_Ciappelletto het volgende:
Pagina.php zet ik liever niet in de webroot. Kan ik een verwijzing maken vanuit die andere map?
Waarom? Als je een rare oplossing moet zoeken, dan betekend het meestal dat je iets fout doet.
pi_157176826
Ik weet dat PHP kan checken met wat voor soort bowser je de site bekijkt. Zou je er dan voor kunnen zorgen dat je een andere pagina indeling voor je mobiel krijgt dan 'gewoon' achter de computer?
  donderdag 29 oktober 2015 @ 08:06:34 #84
37634 wobbel
Da WoBBeL King
pi_157177063
quote:
0s.gif Op woensdag 28 oktober 2015 19:17 schreef Light het volgende:

[..]

Dan heb je een dependant subquery en waarschijnlijk minder optimalisatiemogelijkheden. Bij kleine aantallen (tientallen) maakt dat niet uit, bij grotere aantallen klanten en/of bestellingen zou ik het eerst vergelijken om te zien welke oplossing beter presteert.
Het gaat om een paar duizend records, dus op zich valt het mee. Maar bedankt voor het meedenken, zoeken met NULL functioneert inderdaad :) Weer wat geleerd vandaag.

Gaan we ons vandaag eens inlezen in DOMDocument...moet een 12e span uitlezen uit een HTML document _O-
pi_157187823
quote:
0s.gif Op donderdag 29 oktober 2015 08:06 schreef wobbel het volgende:

[..]

Het gaat om een paar duizend records, dus op zich valt het mee. Maar bedankt voor het meedenken, zoeken met NULL functioneert inderdaad :) Weer wat geleerd vandaag.

Gaan we ons vandaag eens inlezen in DOMDocument...moet een 12e span uitlezen uit een HTML document _O-
Kun je die span niet op iets anders pakken dan dat het het 12e item is? Iets met een id, class of ander attribuut zou het leven veel makkelijker maken, dan ben je niet meer volledig afhankelijk van de volgorde waarin de items staan.
  donderdag 29 oktober 2015 @ 19:54:36 #86
308438 Ser_Ciappelletto
Semi-professionele SJW
pi_157188833
quote:
0s.gif Op woensdag 28 oktober 2015 20:25 schreef Darkomen het volgende:

[..]

Waarom? Als je een rare oplossing moet zoeken, dan betekend het meestal dat je iets fout doet.
Geen idee of het een rare oplossing is en of ik iets fout doe. :P
  FOK!mycroftheld zaterdag 31 oktober 2015 @ 19:56:35 #87
128465 verified  bondage
Ingewikkeld
pi_157229352
Ik heb het in het verleden al een keer eerder gevraagd maar helaas is het tot dusver nog niet gelukt, probeer het daarom nog maar een keer :7

Wat ik wil is in een sql query quotes uit reacties filteren. Ik heb hiervoor iets geschreven maar dit werkt helaas niet naar wens. Het probleem is dat alleen de eerste quote eruit wordt gefilterd en de rest wordt genegeerd.

Iemand een idee of het überhaupt mogelijk is in sql en wat mijn opties zijn? Mijn idee zou zijn om er een loop van te maken en net zo vaak itereren dat het hele bericht doorlopen is. Ik kan echter geen bruikbare voorbeelden vinden.

Dit is de query die ik nu gebruik:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
             SELECT ...
                    CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
                            MID( 
                               `contents`, 
                               LOCATE( '<blockquote>', `contents` ) + 12, 
                               (LOCATE( '</blockquote>', `contents` ) - LOCATE( '<blockquote>', `contents` )) - 12 
                            ) 
                    ELSE 
                            '' 
                    END AS post_quote, 
                    CASE WHEN LOCATE( '<blockquote>', `contents` ) != 0 THEN 
                            CONCAT_WS( 
                               LEFT( `contents` , LOCATE( '<blockquote>', `contents`) - 1), ' ', 
                               RIGHT( `contents` , LENGTH(`contents`) - (LOCATE( '</blockquote>', `contents` ) + 12)) 
                            ) 
                    ELSE 
                            `contents` 
                    END AS post_contents, 
                    ...
            FROM fok_topic, fok_post 
            WHERE ...

Hier komen twee velden uit, namelijk: post_quote en post_contents. Het eerste veld moet alle quotes bevatten en het tweede de overige tekst.

Hieronder een voorbeeld van de data welke doorzocht wordt:
1
2
3
4
5
6
<blockquote><font size="1" face="verdana, aial, helvetica">quote:</font>
<hr>Feedback is geen vrijblijvend "post hier wat je wilt"-forum. Als je denkt grappig te 
moeten zijn, je postaantal te moeten opkrikken of om een andere reden een post plaatst die in de 
FB-context totaal geen nut heeft, loop je de kans dat je post verwijderd wordt.<hr>
</blockquote>Nog steeds geldt in Feedback het "post dan niks"-principe: als je niks te 
melden hebt, ga dan wat anders doen. Er moeten nog te veel compleet nutteloze posts verwijderd worden...

Edit: Deze data wordt aan een Sphinx zoekserver index gevoed en ik kan helaas niets manipuleren. Dit is de reden dat het in de query moet worden gedaan.

[ Bericht 0% gewijzigd door bondage op 31-10-2015 20:11:42 ]
pi_157229541
Volgens mij heeft MySQL nog steeds niet echt lekkere support voor regular expressions, maar dit is een schoolvoorbeeld van een situatie waarbij je die wilt gebruiken. ;)
Is het geen optie om gewoon het geheel te selecteren en de regex replace in PHP te doen?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  FOK!mycroftheld zaterdag 31 oktober 2015 @ 20:06:24 #89
128465 verified  bondage
Ingewikkeld
pi_157229638
quote:
0s.gif Op zaterdag 31 oktober 2015 20:03 schreef Monolith het volgende:
Volgens mij heeft MySQL nog steeds niet echt lekkere support voor regular expressions, maar dit is een schoolvoorbeeld van een situatie waarbij je die wilt gebruiken. ;)
Is het geen optie om gewoon het geheel te selecteren en de regex replace in PHP te doen?
Jup, klopt :) Ik was vergeten te vermelden dat het niet naar een PHP script gaat. Deze data wordt aan een Sphinx zoekserver index gevoed en ik kan helaas niets manipuleren. Dit moet dus in de query worden gedaan.
pi_157229772
quote:
14s.gif Op zaterdag 31 oktober 2015 20:06 schreef bondage het volgende:

[..]

Jup, klopt :) Ik was vergeten te vermelden dat het niet naar een PHP script gaat. Deze data wordt aan een Sphinx zoekserver index gevoed en ik kan helaas niets manipuleren. Dit moet dus in de query worden gedaan.
Sphinx ken ik niet echt als search engine, maar heeft die niet net als bijvoorbeeld ElastisSearch en SOLR gewoon filtermogelijkheden op de gevoede data?
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  FOK!mycroftheld zaterdag 31 oktober 2015 @ 20:17:45 #91
128465 verified  bondage
Ingewikkeld
pi_157229925
quote:
1s.gif Op zaterdag 31 oktober 2015 20:11 schreef Monolith het volgende:

[..]

Sphinx ken ik niet echt als search engine, maar heeft die niet net als bijvoorbeeld ElastisSearch en SOLR gewoon filtermogelijkheden op de gevoede data?
Het is bij Sphinx mogelijk om gebruik te maken van een xml pipe. Dan kan ik de data zelf aan de indexer voeden vanuit een php script. Dit is echter zeer traag en daarom geen optie. Helaas is het maar een simpele server en als er heel veel tegelijk uitgevoerd moet worden vertraagt de boel.
pi_157230201
quote:
14s.gif Op zaterdag 31 oktober 2015 20:17 schreef bondage het volgende:

[..]

Het is bij Sphinx mogelijk om gebruik te maken van een xml pipe. Dan kan ik de data zelf aan de indexer voeden vanuit een php script. Dit is echter zeer traag en daarom geen optie. Helaas is het maar een simpele server en als er heel veel tegelijk uitgevoerd moet worden vertraagt de boel.
Is zoiets geen optie?
https://github.com/hholzgra/mysql-udf-regexp

Als je tenminste UDFs kunt gebruiken op je server.
Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
  FOK!mycroftheld zaterdag 31 oktober 2015 @ 20:30:38 #93
128465 verified  bondage
Ingewikkeld
pi_157230295
quote:
1s.gif Op zaterdag 31 oktober 2015 20:27 schreef Monolith het volgende:

[..]

Is zoiets geen optie?
https://github.com/hholzgra/mysql-udf-regexp

Als je tenminste UDFs kunt gebruiken op je server.
Dank, ga ik even checken. Het is mijn eigen server, denk dat ik die mogelijkheid wel heb. En anders creëer ik deze (8>

Heb echter nog niet eerder iets met UDFs gedaan dus even uitzoeken hoe en wat.
pi_157277098
Ik heb een bestan met op elke lijn 2 of meerdere bestandsnamen. Deze zijn gescheiden door een spatie en spaties in bestandsnamens geescaped. (Voor de nieuwsgierigen, output van fdupes -1 -r -S ./)

Ik wil deze lijnen met preg_split splitten, maar ik breek m'n hersens over hoe ik met die escaped spatie om moet gaan. Hoe krijg ik dit voor elkaar?

Zelfs $files = str_getcsv($line," ","","\\"); biedt geen uitkomst.. (Waarom herkent ie de backslashes niet?)

[ Bericht 14% gewijzigd door Keiichi op 02-11-2015 21:11:04 ]
pi_157279732
spaties matchen op [^\\]\s ?
pi_157285270
quote:
0s.gif Op maandag 2 november 2015 20:36 schreef Keiichi het volgende:
Ik heb een bestan met op elke lijn 2 of meerdere bestandsnamen. Deze zijn gescheiden door een spatie en spaties in bestandsnamens geescaped. (Voor de nieuwsgierigen, output van fdupes -1 -r -S ./)

Ik wil deze lijnen met preg_split splitten, maar ik breek m'n hersens over hoe ik met die escaped spatie om moet gaan. Hoe krijg ik dit voor elkaar?

Zelfs $files = str_getcsv($line," ","","\\"); biedt geen uitkomst.. (Waarom herkent ie de backslashes niet?)
Zoiets?
1
2
3
4
5
<?php 
$s 
'123.php 456\ 789.php ab\ c\ def.php';
$a preg_split'~(?<!\\\)\\s~'$s ); 
print_r($a); 
?>
1
2
3
4
5
6
Array
(
    [0] => 123.php
    [1] => 456\ 789.php
    [2] => ab\ c\ def.php
)
When the student is ready, the teacher will appear.
When the student is truly ready, the teacher will disappear.
  FOK!mycroftheld zaterdag 7 november 2015 @ 14:14:37 #97
128465 verified  bondage
Ingewikkeld
pi_157380875
Ik zit met een regex probleempje en aangezien ik nogal faal als het aankomt op reguliere expressies kom er niet uit ;(

Wat ik wil is plaatjes uit posts filteren, echter moeten plaatjes met een bepaalde class wel blijven staan.

Dit moet blijven:
1<img class="rde_img_smiley" src="http://i.fok.nl/s/clown.gif" width="15" height="15" alt=":+" />

Dit moet weg:
1<img data-src="http://www.voorbeeld.com/bla.jpg" style="visibility:hidden;" />

Ik gebruik deze regex maar die haalt alle afbeeldingen weg:

1
2
3
<?php
$result 
preg_replace('/<img(?<!class="rde_img_smiley")[^>]+\>/i'"[afbeelding verwijderd]"$post_contents);
?>

Iemand idee hoe dit op te lossen?
pi_157385040
quote:
11s.gif Op zaterdag 7 november 2015 14:14 schreef bondage het volgende:
Ik zit met een regex probleempje en aangezien ik nogal faal als het aankomt op reguliere expressies kom er niet uit ;(

Wat ik wil is plaatjes uit posts filteren, echter moeten plaatjes met een bepaalde class wel blijven staan.

Dit moet blijven:
[ code verwijderd ]

Dit moet weg:
[ code verwijderd ]

Ik gebruik deze regex maar die haalt alle afbeeldingen weg:
[ code verwijderd ]

Iemand idee hoe dit op te lossen?
Some people, when confronted with a problem, think
“I know, I'll use regular expressions.” Now they have two problems. (bron / meer info)

Ik zou DOMDocument gebruiken, in combinatie met DOMNode::removeChild() (die je gewoon hebt, want DOMDocument extends DOMNode).
  Moderator / Redactie Sport zaterdag 7 november 2015 @ 18:22:45 #99
359864 crew  Nattekat
De roze zeekat
pi_157385295
Als je al RE's wilt gebruiken, dan hoef je enkel te kijken of de string 'class=*"rde_smiley"' (niet) bevat.

Dus .*(class\=).*(\"rde_smiley\").*
100.000 katjes
Fuck the EBU!
pi_157385441
quote:
0s.gif Op zaterdag 7 november 2015 18:22 schreef Nattekat het volgende:
Als je al RE's wilt gebruiken, dan hoef je enkel te kijken of de string 'class=*"rde_smiley"' (niet) bevat.

Dus .*(class\=).*(\"rde_smiley\").*
En dan moet je er nog rekening mee houden dat die class kan worden voorafgegaan en/of gevolgd door een andere class. En dat een afbeelding zonder die class gevolgd kan worden door een met die class, dan moet je wel de goede afbeelding verwijderen. En over een half jaar moet je ook nog snappen wat de regex doet (ook als het er niet in commentaar bij staat).
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')