De "!" operator

Voorwaardelijke criteria van eenvoudige ontkenning, bij het werken op velden die buiten de tabel liggen (velden die toegankelijk zijn via een verbinding met een andere tabel), doen niet altijd wat je in eerste instantie zou kunnen denken.

Neem bijvoorbeeld de voorwaarde {titre_mot!=rood} die, in een ARTICLES-lus, alle artikelen zou moeten selecteren die niet gekoppeld zijn aan het trefwoord "rood". Maar wat gebeurt: het type SQL join dat is aangemaakt selecteert alleen artikelen die aan ten minste één trefwoord gekoppeld zijn, en waarbij ten minste één van die trefwoorden niet "rood" is.

Maar in de meeste gevallen zouden we gewoon proberen alle artikelen weer te geven die niet het trefwoord "rood" hebben, ongeacht of wel of geen andere trefwoorden hebben. Dit is het resultaat van het gebruik van code met een {!voorwaarde}. De onderstaande code genereert een dubbele SQL query:

<BOUCLE_articles(ARTICLES){!titre_mot = 'X'}> ...

Eerst worden artikelen met trefwoord X geselecteerd en vervolgens worden ze uit de selectie verwijderd door het NOT IN (selectievoorwaarde) op de SQL database query.

Deze syntaxis is ook geldig wanneer je een "join field" wilt forceren, wat alsvolgt geschreven kan worden:

<BOUCLE_articles(ARTICLES){!mots.titre = 'X'}> ...

Voorbeeld

Selecteer de rubrieken die geen artikel hebben waarvan de titel begint met een "L" of een "l". Merk op dat deze query gebruik maakt van een reguliere expressie
(^[Ll]) die meer rekenkracht vereist van de database manager.

<BOUCLE_rub(RUBRIQUES){!articles.titre == '^[Ll]'}> ...

Auteur hanjo Gepubliceerd op: Aangepast: 12/03/23

Vertalingen: English, français, Nederlands