Waarom kan ik niet filteren op IS NOT NULL in deze query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer / Overheid / Complexiteit

Functieomschrijving Wil jij als Java Developer een bijdrage leveren aan een veiliger Nederland en je als Java Developer bezig houden met zeer complexe bedrijfskritische applicaties? Lees dan snel verder! Doorontwikkelen bedrijfskritische applicaties; Aanpassingen maken in de bestaande applicatie; Vertalen van jouw visie op continuous integration en continuous delivery; Debuggen van de applicatie; In gesprek gaan met eindgebruikers om verbetervoorstellen op te halen. Functie-eisen Minimaal HBO-werk en denkniveau; Minimaal 5 jaar werkervaring als Java Developer; Je bent minimaal OCP-Java SE 6 gercertificeerd; Je hebt kennis van Webservices en Continuous Integration; Je bent analytisch sterk en zowel klant- als resultaatgericht. Bedrijfsomschrijving Binnen

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Senior DevOps-ontwikkelaar eIDAS

Functie­omschrijving Burgers en bedrijven veilig en betrouwbaar digitaal toegang geven tot diensten en producten van het ministerie van Economische Zaken en Klimaat. Als senior DevOps-ontwikkelaar bouw je daar letterlijk aan mee. En dat doe je bij DICTU: een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Jij werkt mee aan de doorontwikkeling van eIDAS, dat staat voor Electronic IDentification Authentication and trust Services. Deze koppeling maakt de grensoverschrijdende authenticatie op overheidswebsites binnen de Europese Unie mogelijk. Het ministerie van Economische Zaken en Klimaat heeft één moderne toegangspoort voor zijn diensten en inspecties. Enkele daarvan zijn dankzij eIDAS inmiddels

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Snelle Jaap

Snelle Jaap

30/01/2018 15:19:03
Quote Anchor link
Ik probeer alle NULL resultaten uit mijn resultaat te filteren.

Maar met de volgende query krijg ik een error:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
  cnt.id,
  cnt.title,
  cnt.introtext,
  cnt.fulltext,
  cnt.ordering,
  cnt.images,
  cnt.alias,
  cnt.state,
  f.item_id,
  MAX(CASE
    WHEN f.field_id = 3 THEN f.value
  END) AS inslider
FROM snm_fields_values f
JOIN snm_content cnt
  ON cnt.id = f.item_id
WHERE cnt.state = 1
AND f.value = 'ja'
AND inslider IS NOT NULL
GROUP BY f.item_id
ORDER BY f.item_id, inslider


unknown column 'inslider' is wat ik dan krijg te zien. Ik las dat je in een where geen alias kunt gebruiken, maar mijn vraag is: hoe moet het dan wel?

Ik kan het niet vinden op internet.

Om de een of andere reden (wanneer ik die IS NOT NULL regel die een error geeft weghaal) haalt hij ook rijen op waarbij inslider de value NULL heeft.
 
PHP hulp

PHP hulp

22/09/2020 13:18:56
 
Thomas van den Heuvel

Thomas van den Heuvel

30/01/2018 16:02:25
Quote Anchor link
Let's see. inslider heeft alleen een waarde als f.field_id gelijk is aan 3? Als je dat nu eens naar de WHERE verplaatst? En is ook gegarandeerd dat f.value (dan of in het algemeen) altijd een waarde heeft?

En waar gaat deze query uberhaupt over? Misschien is er een andere manier om dit probleem op te lossen.
 
Snelle Jaap

Snelle Jaap

31/01/2018 10:19:20
Quote Anchor link
**quoteknip**
Hij heeft niet altijd een waarde, vandaar dat er soms een resultaat terugkomt dat NULL is. Ik wil graag die resultaten wegfilteren.
Gewijzigd op 31/01/2018 17:38:55 door - Ariën -
 
Ivo P

Ivo P

31/01/2018 10:34:24
Quote Anchor link
Eenvoudigste is vaak om het hele stuk dat je een alias geeft, ter herhalen in de WHERE.
NB: je mist ook een heel stuk in GROUP BY, aangezien je daar alle kolommen moet noemen (niet zijnde aggregatie functies zoals MAX


Alternatief kan ook HAVING zijn in dit geval:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
SELECT
  cnt.id,
  cnt.title,
  cnt.introtext,
  cnt.fulltext,
  cnt.ordering,
  cnt.images,
  cnt.alias,
  cnt.state,
  f.item_id,
  MAX(CASE
    WHEN f.field_id = 3 THEN f.value
  END) AS inslider
FROM snm_fields_values f
JOIN snm_content cnt
  ON cnt.id = f.item_id
WHERE cnt.state = 1
AND f.value = 'ja'
AND MAX(CASE
    WHEN f.field_id = 3 THEN f.value
  END) IS NOT NULL
GROUP BY   cnt.id,
  cnt.title,
  cnt.introtext,
  cnt.fulltext,
  cnt.ordering,
  cnt.images,
  cnt.alias,
  cnt.state,
  f.item_id
HAVING MAX(CASE
    WHEN f.field_id = 3 THEN f.value
  END) IS NOT NULL
ORDER BY f.item_id, inslider


Mogelijk dat je daar wel de alias kunt gebruiken in Mysql. Mag je zelf even testen.
 
Snelle Jaap

Snelle Jaap

31/01/2018 11:06:43
Quote Anchor link
**quoteknip**

HAVING kwam ik inderdaad ook al tegen, ik had daar nog nooit van gehoord dus het is even inlezen hoe dat nou precies werkt. De query boven geeft overigens de volgende error: Ongeldig gebruik van GROUP-functie
Gewijzigd op 31/01/2018 17:38:38 door - Ariën -
 
Ivo P

Ivo P

31/01/2018 11:10:23
Quote Anchor link
ik zie dat ik mijn eerste antwoord niet volledig heb aangepast:
ben stukje in WHERE vergeten te wissen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
SELECT
  cnt.id,
  cnt.title,
  cnt.introtext,
  cnt.fulltext,
  cnt.ordering,
  cnt.images,
  cnt.alias,
  cnt.state,
  f.item_id,
  MAX(CASE
    WHEN f.field_id = 3 THEN f.value
  END) AS inslider
FROM snm_fields_values f
JOIN snm_content cnt ON cnt.id = f.item_id
WHERE cnt.state = 1
  AND f.value = 'ja'
GROUP BY  
  cnt.id,
  cnt.title,
  cnt.introtext,
  cnt.fulltext,
  cnt.ordering,
  cnt.images,
  cnt.alias,
  cnt.state,
  f.item_id
HAVING MAX(CASE
    WHEN f.field_id = 3 THEN f.value
  END) IS NOT NULL
ORDER BY f.item_id, inslider
 
Snelle Jaap

Snelle Jaap

31/01/2018 11:31:31
Quote Anchor link
**quoteknip**

Deze werkt inderdaad. Bedankt, ik denk dat ik het snap. Zal het nog wel een paar keer vaker moeten gebruiken.
Gewijzigd op 31/01/2018 17:38:16 door - Ariën -
 
Obelix Idefix

Obelix Idefix

31/01/2018 17:32:13
Quote Anchor link
@jaap: waarom quote je in jouw reacties de voorgaande post in zijn geheel?
Je topic wordt daardoor onnodig lang (en onoverzichtelijk).
Quote (en zeker hele reacties) aub alleen als het toegevoegde waarde heeft.
Gewijzigd op 31/01/2018 17:32:41 door Obelix Idefix
 
- Ariën -
Beheerder

- Ariën -

31/01/2018 17:40:00
Quote Anchor link
Ik heb de quote even ingeknipt. Ik wil Snelle Jaap graag verzoeken om geen quotes van het laatst voorgaande bericht te plaatsen. Zo blijft het topic makkelijk leesbaar.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.