Toon posts:

Select query op veel velden uit database.

Pagina: 1
Acties:
  • 121 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
beste tweakers,

Ik ben al dagen aan het zoeken naar de oplossing voor mij probleem, het is alsvolgt.

Ik ben vrij beginneling en ben een php/mysql pagina aan het maken waarbij je mensen kan invoeren/zoeken/updaten naja alles wat daar bij komt kijken, nou heb ik een probleem met de select query voor een zoekformulier.

Het zoekformulier bestaat uit heel veel velden, bijmekaar wel 15.

Met o.a voornaam/achternaam/postcode/straat/plaats/leeftijd enzovoort.

Momenteel heb ik een query in de trend van.

Select * from tabel where voornaam LIKE %_POST['voornaam']% or achternaam LIKE ( en zo dus verder.

Alleen maar OR OR OR achtermekaar.
Dit geeft gewoon geen goede resultaten, want als ik als voornaam mijn naam intik en een woonplaats van iemand anders, dan komen ze nog niet tegelijk naar voren, ook niet als ik ze tussen haakjes zet.

Het zou als volgt moeten werken.
Elk veld wat ingevoerd is (hierop moet dus worden gecontroleerd), moet op worden gezocht.

Ongeacht of de voornaam wel bij de plaats hoort e.d.
AND heb ik ook al geprobeerd maar daar moeten de velden precies kloppen dus daar heb ik niks aan.
In de topics die hier al over zijn gemaakt, heb ik nog geen oplossing gevonden die mij op weg helpt.
De fulltext searching waar iedereen het over hebt snap ik niet :(

Ik zat ook nog te denken van , kan je niet alle ingevoerde zoekvelden in een string plaatsen en dan daar op zoeken zoiets als.

Select * from table where $zoekvelden LIKE $ingevulde_zoekvelden

Wat ik ook probeer het komt allemaal uit op niks :(


Wie kan mij helpen hoe zoiets nou wel moet.

Alvast bedankt.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Laat het betreffende stukje code eens zien. Mischien kunnen we dan daar uit opmaken waarom het niet werkt zoals je wilt.

Noushka's Magnificent Dream | Unity


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:17

Janoz

Moderator Devschuur®

!litemod

Wat krijg je wel terug? Als je alles terug krijgt lijkt me dat redelijk logisch aangezien je op alle andere velden uiteindelijk zoekt op achtername LIKE "%%" en daar matched alles op.

Je kunt waarschijnlijk het beste je query dynamisch opbouwen. Begin met een string waarin je alleen het select t/m where hebt staan en plak dan stuk voor stuk elk van de criteria erachter.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Michali schreef op zaterdag 27 augustus 2005 @ 13:55:
Laat het betreffende stukje code eens zien. Mischien kunnen we dan daar uit opmaken waarom het niet werkt zoals je wilt.
de query is

$query = "SELECT * FROM models WHERE (voornaam LIKE '%$_POST[voornaam]%') OR (achternaam LIKE '%$_POST[achternaam]%') OR (straat LIKE '%$_POST[straat]%') OR (plaats LIKE '%$_POST[plaats]%')";

Daarmee krijg ik of te weinig of alles terug
Ik wil gewoon dat als ik mijn voornaam intoets en de plaatsnaam van iemand anders, dat bijde records terugkomen. Dus alles uit die betreffende plaatsnaam en alles met mijn voornaam e.d

Wat wordt precies bedoelt met dynamische opbouwen. Ik kom dat vaker tegen, maar kan me daar niks in voorstellen.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Test welke post waardes aanwezig zijn en zet alleen die in de query.

{signature}


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Die haakjes zijn zo overbodig natuurlijk. Er staat immers maar 1 vergelijking in. Ik zou de query verder toch dynamisch opbouwen. Iets in de zin van:
PHP:
1
2
3
4
5
6
7
8
9
10
$conditions = array();
if ( !empty($_POST['voornaam']) )
{
    $conditions[] = "voornaam LIKE '%" . mysql_real_escape_string($_POST['voornaam']) . "%'";
}
if ( !empty($_POST['achternaam']) )
{
    $conditions[] = "achternaam LIKE '%" . mysql_real_escape_string($_POST['achternaam']) . "%'";
}
$query = "SELECT * FROM models WHERE " . implode(" OR ", $conditions);


Je kunt overigens [php][ /php] tags gebruiken voor je php code.

Noushka's Magnificent Dream | Unity


Verwijderd

Alsjeblief, print eerst de query die je gaat uitvoeren naar het scherm. Aan een of andere string waar nog variabelen in gezet moeten worden hebben we helemaal niks. Welke query wordt er nou uiteindelijk uitgevoerd?

Verwijderd

Topicstarter
Michali schreef op zaterdag 27 augustus 2005 @ 17:44:
Die haakjes zijn zo overbodig natuurlijk. Er staat immers maar 1 vergelijking in. Ik zou de query verder toch dynamisch opbouwen. Iets in de zin van:
PHP:
1
2
3
4
5
6
7
8
9
10
$conditions = array();
if ( !empty($_POST['voornaam']) )
{
    $conditions[] = "voornaam LIKE '%" . mysql_real_escape_string($_POST['voornaam']) . "%'";
}
if ( !empty($_POST['achternaam']) )
{
    $conditions[] = "achternaam LIKE '%" . mysql_real_escape_string($_POST['achternaam']) . "%'";
}
$query = "SELECT * FROM models WHERE " . implode(" OR ", $conditions);


Je kunt overigens [php][ /php] tags gebruiken voor je php code.
Dit is dus dynamische opbouwen.
Zover ik kan zien, kijkt ie dus eerst of het veld leeg is, zo niet dan wordt dat in een variabele gestopt, en vervolgens worden die variabelen achter where gestopt met een OR ertussen.

Klopt dat?.
Effectief verschil met de hele tijd overal OR's te gebruiken is dan, dat de lege velden niet worden meegenomen.
Verbeter me als het niet klopt. newbie. :)

[ Voor 9% gewijzigd door Verwijderd op 27-08-2005 18:37 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Klopt ja. Als je dit niet doet, dan krijg je in sommige gevallen (als één of meerdere velden geen waarde hebben) condities die altijd true zijn en er dus voor zorgen dat je alle rijen terug krijgt. Precies zoals Janoz zegt eigenlijk.

Noushka's Magnificent Dream | Unity


Verwijderd

Dnamisch opbouwen, betekend in dit geval niets anders dan dat je eindresultaat afhangt van de input van de gebruiker. Oftewel, het hangt van de waarden die de bezoeker opgeeft af hoe je query eruit komt te zien.

Overigens vind ik één ding bijzonder overbodig; het in een zoekformulier laten zien van alle velden. Zie jij bij bijvoorbeeld Google.com ook meerdere velden staan? Dus, een veld voor het zoeken naar huizen, een veld voor het zoeken naar auto's, een veld voor het zoeken naar personen, etc.? Nee. Google pakt het anders aan. Zij laten één veld zien, en gaan met die waarde - laten we hem 'zoekwaarde' noemen - aan het speuren.

Waarom doe jij dat ook niet?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$zoekwaarde = 'amsterdam';

$query = "
SELECT * FROM databasename
WHERE
voornaam LIKE '%".$zoekwaarde."%' 
OR
achternaam LIKE '%".$zoekwaarde."%'
OR
woonplaats LIKE '%".$zoekwaarde."%'
ORDER BY iets DESC
";


Als je dit niet wilt, ik zou overigens niet weten waarom niet, dan moet je inderdaad je query anders opbouwen en alleen de velden in je WHERE-gedeelte opnemen waarop gezocht is. Succes!

[ Voor 14% gewijzigd door Verwijderd op 27-08-2005 21:11 ]


  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Verwijderd schreef op zaterdag 27 augustus 2005 @ 21:09:

Overigens vind ik één ding bijzonder overbodig; het in een zoekformulier laten zien van alle velden. Zie jij bij bijvoorbeeld Google.com ook meerdere velden staan? Dus, een veld voor het zoeken naar huizen, een veld voor het zoeken naar auto's, een veld voor het zoeken naar personen, etc.? Nee. Google pakt het anders aan. Zij laten één veld zien, en gaan met die waarde - laten we hem 'zoekwaarde' noemen - aan het speuren.
Tja ik vind bijzonder overbodig een beetje overdreven. Google is ten eerste een zoekmachine op internet (in basis gegevens zonder vaste structuur), dat is wel een beetje anders dan een database met persoonsgegevens doorzoeken (gegevens met vaste structuur). Daarnaast, vind je de geavanceerde zoekfunctie van Google oook overbodig? Daar staan ook meedere velden.

Verwijderd

PolarBear schreef op zaterdag 27 augustus 2005 @ 21:23:
[...]


Tja ik vind bijzonder overbodig een beetje overdreven. Google is ten eerste een zoekmachine op internet (in basis gegevens zonder vaste structuur), dat is wel een beetje anders dan een database met persoonsgegevens doorzoeken (gegevens met vaste structuur). Daarnaast, vind je de geavanceerde zoekfunctie van Google oook overbodig? Daar staan ook meedere velden.
Ik vind, maar dat is mijn bescheiden mening, dat je de plank spreekwoordelijk finaal misslaat. Namelijk, bij de geavanceerde mogelijkheid tot zoeken bij Google.com kun je niet zoals ik al eerder aangaf zoeken op andere types zoekresultaten. De enigste extra mogelijkheden zijn de opties om op ándere manieren te zoeken. En nogmaals, dat is iets geheel anders dan het zoeken op andere types resultaten doormiddel van meerdere velden.
Ik vind namelijk, om het nog iets duidelijker te maken ;), nog steeds geen extra velden om te zoeken naar - en ik noem maar een voorbeeld - landen, voornamen, achternamen, woonplaatsen, automerken, enzovoorts! Kortom, ik vind dat meneer Google Inc. hier wel degelijk goed over nagedacht heeft. En om een voorbeeld uit míjn praktijksituaties te geven, ik heb geen enkele applicatie gebouwd waarbij een zoekformulier wordt getoond met meerdere velden - tenzij het was bedoeld om te zoeken op een ándere manier (bijvoorbeeld, zoals bij Google, om te zoeken met de OR operatorof de de AND operator). Ik blijf dus zeer zeker bij mijn standpunt en de code die ik eerder heb gegeven laat (onder andere, naast de argumenten in deze reply) zien waarom.

offtopic:
Hm - is misschien ietwat offtopic dit alles...

[ Voor 5% gewijzigd door Verwijderd op 27-08-2005 21:57 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Als de gebruiker weet dat de achternaam 'bla' was dan is het daarentegen ook onzin om te zoeken naar de plaats 'bla'. Zeker als je met LIKE blijft werken en als de DB heel groot wordt, is het erg zonde om zulke dure vergelijkingen welke in feite onnodig zijn toe te voegen.
Wordt anders leuk als je een persoon zoekt met 'dam' in de achternaam. :/
Google is in zoverre onwetend dat alle data van het type 'zoekwoord' is. TS heeft alle data mooi in de respectievelijke kolommetjes, dus waarom zou je dat niet gebruiken.

Zo'n zoekfunctie wat bij alle kolommen LIKE '%".$zoekwaarde."%' doet kan wel, mits als extra optie naast een goedwerkende gerichte search.

Overigens hang je sterk aan het voorbeeld dat Google zou stellen, maar er zijn natuurlijk ook tig routeplanners, telefoonboeken etc waar je wel gewoon alle kollomen ziet bij het zoek formulier.

[ Voor 26% gewijzigd door Voutloos op 28-08-2005 12:03 ]

{signature}


Verwijderd

Topicstarter
Ok dus dynamische opbouw is het enige wat werkt.
Ik zal aan de gang gaan met het voorbeeld. Kijken of ik er uit kom.

Ik wil niet 1 zoekveld, want dingen zoals cupmaat,haarkleur kleurogen e.d ga ik niet los in een veld typen, dat wordt een dropdown list.

Mochten er nog meer mensen zijn met goede mogelijkheden.
Ze zijn welkom

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 28-04 22:08

ripexx

bibs

Als je toch dynamisch gaat opbouwen dan kan je je zoek formulier ook een extra keuze mee geven (AND of OR) en dat meenemen in de opbouw. Het opbouwen van SQL statements is opzich niet zo moeilijk. Het is gewoon een kwestie van de structuur een beetje intelligent maken. Metnamen als je gebruik maakt van stamtabellen dan wil je dat via bijvoorbeedl een drop down of multiple select doen. Bij een multiple select loop je weer tegen andere opties aan omdat dat bij een zoek formulier een OR dan wil afdwingen terwijl de rest op bijvoorbeeld AND kan staan. Als je gebruik maakt van array's dan wordth et verwerken een stuk eenvoudiger. Je kan via HTML afdwingen dat alle info in een array wordt geplaats en dus.

HTML:
1
2
<input type="text" name="data['achternaam']" />
<input type="text" name="data['woonplaats']" />

Dan is dat in PHP zo terug te vinden:
PHP:
1
2
$_POST['data']['achternaam'];
$_POST['data']['woonplaats'];

Voordeel hiervan is ondermeer dat je eenvoudig in loopjes alles kan checken en voorkomt een enorme was lijst van if/else statements. Verder is het naturlijk afhankelijk van je database opbouw. Ook kan je overwegen om op bepaalde velden een fulltext index te leggen. Bij zaken als achternaam en woonplaats kan dat nog wel eens schele ten opzichte van LIKE '%[str]%' oplossingen.

Zelf gebruik ik voor de quick search een fulltext index en de rest van ik af met dynamische statements. Zo is het handig dat je kan switch van = naar like als aan het begin of einde een "*"staat. Dus alleen like toevoegen of weer standaard maken via opties. Dus genoeg keuze mogelijkheden. :P

buit is binnen sukkel


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
ripexx schreef op zondag 28 augustus 2005 @ 13:51:
Zelf gebruik ik voor de quick search een fulltext index en de rest van ik af met dynamische statements. Zo is het handig dat je kan switch van = naar like als aan het begin of einde een "*"staat. Dus alleen like toevoegen of weer standaard maken via opties. Dus genoeg keuze mogelijkheden. :P
//offtopic: Een asterisk (*) voor de zoekterm doet helemaal niets in MySQL fulltext, alleen achter de zoekterm.

Verwijderd

Topicstarter
ripexx schreef op zondag 28 augustus 2005 @ 13:51:
Als je toch dynamisch gaat opbouwen dan kan je je zoek formulier ook een extra keuze mee geven (AND of OR) en dat meenemen in de opbouw. Het opbouwen van SQL statements is opzich niet zo moeilijk. Het is gewoon een kwestie van de structuur een beetje intelligent maken. Metnamen als je gebruik maakt van stamtabellen dan wil je dat via bijvoorbeedl een drop down of multiple select doen. Bij een multiple select loop je weer tegen andere opties aan omdat dat bij een zoek formulier een OR dan wil afdwingen terwijl de rest op bijvoorbeeld AND kan staan. Als je gebruik maakt van array's dan wordth et verwerken een stuk eenvoudiger. Je kan via HTML afdwingen dat alle info in een array wordt geplaats en dus.

HTML:
1
2
<input type="text" name="data['achternaam']" />
<input type="text" name="data['woonplaats']" />

Dan is dat in PHP zo terug te vinden:
PHP:
1
2
$_POST['data']['achternaam'];
$_POST['data']['woonplaats'];

Voordeel hiervan is ondermeer dat je eenvoudig in loopjes alles kan checken en voorkomt een enorme was lijst van if/else statements. Verder is het naturlijk afhankelijk van je database opbouw. Ook kan je overwegen om op bepaalde velden een fulltext index te leggen. Bij zaken als achternaam en woonplaats kan dat nog wel eens schele ten opzichte van LIKE '%[str]%' oplossingen.

Zelf gebruik ik voor de quick search een fulltext index en de rest van ik af met dynamische statements. Zo is het handig dat je kan switch van = naar like als aan het begin of einde een "*"staat. Dus alleen like toevoegen of weer standaard maken via opties. Dus genoeg keuze mogelijkheden. :P
Het klinkt allemaal heel mooi, maar ben een newbie om dat te begrijpen.
Ik zie het liefst voorbeelden die ik kan gebruiken of dergelijke.

Verwijderd

PHP:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// formulier tonen

    /* Als er geen data ontvangen is,
    tonen we hier het formulier dat
    met POST verzonden wordt */

// resultaat verwerken

    /* Als er wel data ontvangen is,
    bouwen we hier de SELECT-query
    dynamisch op */

    /* Eerst kijken we welke variabelen
    (POST-variabelen; data die ontvangen
    is via het formulier) we ontvangen
    hebben en controleren we of ze niet
    leeg zijn. Met díe variabelen gaan
    we de query opbouwen */

    /* We beginnen met het opstellen
    van het gedeelte van de query dat
    we altijd nodig gaan hebben: */

    $query = "SELECT * FROM tabelnaam WHERE";

    /* Nu gaan we aan de slag met de
    variabelen die we net bepaald
    hebben en nemen als voorbeeld aan
    dat we o.a. de variabele $_POST['voornaam']
    (met een waarde `Henk`) hebben
    ontvangen */

    $query .= " voornaam = '".$_POST['voornaam']."'";

    /* Tevens stellen we voor dat we een
    variabele $_POST['achternaam'] (met een
    waarde `de Boer`) hebben ontvangen en dus
    plakken we dat gedeelte er ook `aan vast` */

    $query .= "OR achternaam = '".$_POST['achternaam']."'";

    /* dan nog even bepalen welke sorteermethode
    we gaan gebruiken (of laat je dit door de
    bezoeker doen?) */

    $query .= " ORDER BY voornaam ASC, achternaam ASC";

    /* ... rest te melden dat je de bezoeker ook
    nog kunt laten bepalen of er gezocht moet 
    worden met AND of OR, of met LIKE etc. */

Verwijderd

Topicstarter
Zo dit is mooi werk, ik ga dit bekijken en uitproberen.

Ik zie hier nog steeds de OR methode, maar omdat het dynamische is opgebouwd en geen lege velden worden meegenomen, zal de uitkomst hier wel goed zijn. dat klopt dan?
ik sta nog vaak versteld van hoeveel je er wel niet allemaal mee kan doen. legio mogelijkheden voor vanalles.

Maar welk gedeelte van het script controleert dan of de velden wel of niet leeg zijn?

[ Voor 12% gewijzigd door Verwijderd op 28-08-2005 16:09 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Nu is het wel goed. Het probleem is gewoon dat "WHERE voorwaarde 1 OR voorwaarde 2 OR ...OR TRUE" altijd TRUE is (en "WHERE voorwaarde 1 AND voorwaarde 2 AND ... AND FALSE" is altijd FALSE.). Dit is een stukje basis boolean logica. :)
Verwijderd schreef op zondag 28 augustus 2005 @ 16:05:
Maar welk gedeelte van het script controleert dan of de velden wel of niet leeg zijn?
Die vergelijkingen staan er in ivy's code nog niet, daarom vind ik Michali's methode om de WHERE clasue op te bouwen met een array en implode eerlijk gezegd beter en overzichtelijker dan hetgeen ivy gepost heeft. :> Bij Miachali's manier zijn er veel minder vergelijkingen nodig en hoef je maar 1 plek aan te passen als je 'AND' ipv 'OR' wil.

{signature}


Verwijderd

Topicstarter
Voutloos schreef op zondag 28 augustus 2005 @ 16:13:
Nu is het wel goed. Het probleem is gewoon dat "WHERE voorwaarde 1 OR voorwaarde 2 OR ...OR TRUE" altijd TRUE is (en "WHERE voorwaarde 1 AND voorwaarde 2 AND ... AND FALSE" is altijd FALSE.). Dit is een stukje basis boolean logica. :)

[...]

Die vergelijkingen staan er in ivy's code nog niet, daarom vind ik Michali's methode om de WHERE clasue op te bouwen met een array en implode eerlijk gezegd beter en overzichtelijker dan hetgeen ivy gepost heeft. :> Bij Miachali's manier zijn er veel minder vergelijkingen nodig en hoef je maar 1 plek aan te passen als je 'AND' ipv 'OR' wil.
Ik ga het allemaal wel even proberen, stukje code toevoegen even aanpassen en kijken hoe het gaat werken.

Verwijderd

Voutloos schreef op zondag 28 augustus 2005 @ 16:13:
Nu is het wel goed. Het probleem is gewoon dat "WHERE voorwaarde 1 OR voorwaarde 2 OR ...OR TRUE" altijd TRUE is (en "WHERE voorwaarde 1 AND voorwaarde 2 AND ... AND FALSE" is altijd FALSE.). Dit is een stukje basis boolean logica. :)

[...]

Die vergelijkingen staan er in ivy's code nog niet, daarom vind ik Michali's methode om de WHERE clasue op te bouwen met een array en implode eerlijk gezegd beter en overzichtelijker dan hetgeen ivy gepost heeft. :> Bij Miachali's manier zijn er veel minder vergelijkingen nodig en hoef je maar 1 plek aan te passen als je 'AND' ipv 'OR' wil.
Ai, stom van me. Ik zal er de volgende keer gelijk een strikje omheen doen, een bos bloemen laten bezorgen en een doos gevarieerd gebak laten naleveren.

/me bedoeld te zeggen dat hij de TS logisch wil laten nadenken en dat hij hier zeer zeker - ditmaal ;-) - geen kant-en-klare code neerzet

Oftewel, als ik hier een gedachtengang neerzet dan betekent dat natuurlijk niet dat de TS het exact zo moet uitvoeren. Integendeel, hij of zij mag zelf de beste methode uitzoeken en dan is een IMPLODE wellicht zo slecht nog niet. Inderdaad.

[ Voor 20% gewijzigd door Verwijderd op 28-08-2005 16:57 ]


Verwijderd

Topicstarter
dat met implode werkt tot nu toe goed. deze ga ik uitbreiden zodat ie geschikt is voor mijn programmaatje.

dankjewel

  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

vervang in je originele query alle OR's door AND's, en alles zal ook goed werken :p

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
D4Skunk schreef op maandag 29 augustus 2005 @ 10:45:
vervang in je originele query alle OR's door AND's, en alles zal ook goed werken :p
Nee dat zal niet goed werken. Dat staat ook in de startpost al aangegeven.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

rwb schreef op maandag 29 augustus 2005 @ 11:18:
[...]

Nee dat zal niet goed werken. Dat staat ook in de startpost al aangegeven.
Wanneer je zegt : Naam like '%%', dan krijg je gewoon alle namen terug
De reden dat het niet werkt met een OR is dat 1 conditie voldoende is. Als jij zegt : naam like '%%' or voornaam like '%Tom%', dan zal jij alle rijen terugkrijgen waar de naam bestaat, of de voornaam 'Tom' bevat.
Wat je nodig hebt is dus een AND, check het maar. Wat de poster bedoelt met :
'AND heb ik ook al geprobeerd maar daar moeten de velden precies kloppen dus daar heb ik niks aan.' begrijp ik ook niet goed, maar AND is definately the way to go.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ik snap wel wat je bedoelt D4Skunk, maar in de startpost staat:
Dit geeft gewoon geen goede resultaten, want als ik als voornaam mijn naam intik en een woonplaats van iemand anders, dan komen ze nog niet tegelijk naar voren, ook niet als ik ze tussen haakjes zet.
Wat duidelijk om OR gedrag vraagt. ;)
Volgens mij bedoelt TS daar: zoeken met velden achternaam = "achternaamPersoon1" + adres = "adresPersoon2" moet beide records opleveren -> OR. Wellicht is het wel logisch om een keuze AND/OR in te bouwen, zeker omdat dat heel makkelijk is.

[ Voor 29% gewijzigd door Voutloos op 29-08-2005 17:28 ]

{signature}


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
D4Skunk schreef op maandag 29 augustus 2005 @ 17:21:
[...]


Wanneer je zegt : Naam like '%%', dan krijg je gewoon alle namen terug
De reden dat het niet werkt met een OR is dat 1 conditie voldoende is. Als jij zegt : naam like '%%' or voornaam like '%Tom%', dan zal jij alle rijen terugkrijgen waar de naam bestaat, of de voornaam 'Tom' bevat.
Wat je nodig hebt is dus een AND, check het maar. Wat de poster bedoelt met :
'AND heb ik ook al geprobeerd maar daar moeten de velden precies kloppen dus daar heb ik niks aan.' begrijp ik ook niet goed, maar AND is definately the way to go.
Als je idd alleen namen wilt hebben die aan beide eisen voldoen dan werkt AND hier wel ja. Maar zoals Voutloos al opmerkt is het de bedoeling dat alle records die aan een van de voorwaarden voldoet als resultaat getoond wordt. Dus OR alleen moet je dan natuurlijk wel alleen de benodigde velden controleren anders voldoen alle records eraan

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

rwb schreef op maandag 29 augustus 2005 @ 17:31:
[...]

Als je idd alleen namen wilt hebben die aan beide eisen voldoen dan werkt AND hier wel ja. Maar zoals Voutloos al opmerkt is het de bedoeling dat alle records die aan een van de voorwaarden voldoet als resultaat getoond wordt. Dus OR alleen moet je dan natuurlijk wel alleen de benodigde velden controleren anders voldoen alle records eraan
* D4Skunk kruipt weg in een hoekje :$
Pagina: 1