Hét vraag- en antwoordplatform van Nederland

Mag je in een SQL-query haakjes gebruiken?

Bijvoorbeeld:
dit:
SELECT * FROM tools WHERE 1 AND engels = "1" OR nederlands = "1" AND ID IN (SELECT ID FROM tools WHERE win7 = "1")
wil ik veranderen in:
SELECT * FROM tools WHERE 1 AND (engels = "1" OR nederlands = "1") AND ID IN (SELECT ID FROM tools WHERE win7 = "1")

Verwijderde gebruiker
14 jaar geleden

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Geef jouw antwoord

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

/
Geef Antwoord
+
Selected image

Het beste antwoord

ja dat kan :)

Toegevoegd na 45 seconden:
nog eventjes gegoogled voor de zekerheid zie bron:
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden

Andere antwoorden (2)

Ja hoor, in een sql-query kun en mag je haakjes gebruiken.
Ik vraag me alleen af wat je wilt doen met:
Where 1 ...

Je tweede voorbeeld is beter dan het eerste.
Als je of engels of nederlands 1 wilt hebben een daarnaast moet je selectie voldoen aan ID in, dan moet je het stuk met OR erin altijd tussen haakjes zetten, anders krijg je minder betrouwbare resultaten.
Je grijpt op het einde weer terug naar dezelfde tabel (innerjoin), is het dan niet handiger om deze in dit geval mee te nemen in je eerste query:

Zoiets als dit:
SELECT * FROM TOOLS
WHERE (ENGELS = 1 OR NEDERLANDS = 1)
AND WIN7= 1 ;
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden
Verwijderde gebruiker
14 jaar geleden
Je hebt gelijk maar ik ben nog aan het testen. WHERE 1 of WHERE 1=1 geeft geen problemen en komt voor mij beter uit omdat PHP mijn query moet genereren op basis van heel veel argumenten... Superbedankt joh! Ik kan na 2 uur puzzelen weer een stukje verder, werd gek van mezelf ;-) +1
Ja dat mag.

Hou er rekening mee dat als je een 'where 1=1' clausule er in hebt staan je bij niet opletten een altijd geldende query kan maken. Dat heb je niet nodig & moet er gewoon uit.

Ook geneste queries zijn hier niet nodig EN onnodig langzaam.

Dus gewoon:

select [field names]
from [table names]
where [query argumenten]

Er is GEEN ENKELE goede reden om de querie zoals je hem nu laat zien te gebruiken. OOK niet als je veel verschillende argumenten gaat gebruiken. Ik heb zelf in een project meer dan 8 tabellen, 30 velden en 8 of 9 beperkingen nodig, allemaal via het basis schema met joins
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden
Deel jouw antwoord

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

/
Geef Antwoord
+
Selected image