Mysql, if column a is not null, column b is not null. hoe?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • AlphaJuno2
  • Registratie: September 2012
  • Laatst online: 02-10 13:04
Ik moet een gegevens uit onderstaande tabel halen.
In dit geval wil ik id 2 en id 3 selecteren en id 1 skippen
Dus wanneer column document NULL is, moet column date ook NULL zijn, heeft column document een waarde, dan moet column date ook een waarde hebben.

+----+------+----------+------------+
| id | name | document |    date    |
+----+------+----------+------------+
| 1  | John |  doc01   |    NULL    |
| 2  | Jane |  NULL    |    NULL    |
| 3  | Mark |  doc02   | 23-10-2018 |
+----+------+----------+------------+


Iemand een idee hoe deze query er uit komt te zien?

Alvast bedankt

Beste antwoord (via AlphaJuno2 op 23-10-2018 12:04)


  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

SQL:
1
2
3
4
5
6
7
8
9
10
SELECT
      id
    , name
    , document
    , date
FROM table
WHERE
    (document IS NOT NULL AND date IS NOT NULL)
    OR
    (document IS NULL AND date IS NULL)
MichielPH schreef op dinsdag 23 oktober 2018 @ 11:43:
Er valt ook iets voor te zeggen om het op te splitsen in 2 tabellen:
Dan kan je documentId en date nullable maken.
We kennen de usecase niet? Misschien is het een bestaande tabel waar TS data uit wil halen?

[ Voor 45% gewijzigd door Harrie_ op 23-10-2018 11:45 ]

Hoeder van het Noord-Meierijse dialect

Alle reacties


Acties:
  • +1 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 09:39

Mavamaarten

Omdat het kan!

Pseudocode:
if((document == null AND date == null) OR (document != null AND date != null))

Daar moet je het wel mee kunnen doen?

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • MichielPH
  • Registratie: Februari 2005
  • Laatst online: 14-07-2024
Er valt ook iets voor te zeggen om het op te splitsen in 2 tabellen:

+----+------+-------------+
| id | name | documentId  |
+----+------+-------------+
| 1  | John |      1      |
| 2  | Jane |     NULL    |
| 3  | Mark |      2      |
+----+------+-------------+


+----+-------+------------+
| id | name |    date     |
+----+-------+------------+
| 1  | doc01 |  NULL      |
| 1  | doc02 | 23-10-2018 |
+----+-------+------------+


Dan kan je documentId en date nullable maken.

edit:
Vraag niet goed begrepen, tijd voor koffie.

[ Voor 4% gewijzigd door MichielPH op 23-10-2018 11:44 ]


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

SQL:
1
2
3
4
5
6
7
8
9
10
SELECT
      id
    , name
    , document
    , date
FROM table
WHERE
    (document IS NOT NULL AND date IS NOT NULL)
    OR
    (document IS NULL AND date IS NULL)
MichielPH schreef op dinsdag 23 oktober 2018 @ 11:43:
Er valt ook iets voor te zeggen om het op te splitsen in 2 tabellen:
Dan kan je documentId en date nullable maken.
We kennen de usecase niet? Misschien is het een bestaande tabel waar TS data uit wil halen?

[ Voor 45% gewijzigd door Harrie_ op 23-10-2018 11:45 ]

Hoeder van het Noord-Meierijse dialect


Acties:
  • +2 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Komaan zeg. Leg dan op z'n minst uit hoe je met die query op de proppen kwam en/of geef wat onderbouwing...
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
Laten we nou eens kappen met kant-en-klare oplossingen neer te zetten. Niemand heeft er baat bij als we van de Devschuur® een afhaalchinees of slap Stackoverflow aftreksel maken.

[ Voor 4% gewijzigd door RobIII op 23-10-2018 11:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • AlphaJuno2
  • Registratie: September 2012
  • Laatst online: 02-10 13:04
SQL:
1
2
3
4
5
6
7
8
9
10
SELECT
      id
    , name
    , document
    , date
FROM table
WHERE
    (document IS NOT NULL AND date IS NOT NULL)
    OR
    (document IS NULL AND date IS NULL)
Super bedankt voor je antwoord. ;)

Totaal niet bij stil gestaan dat ik ook een OR operator kan gebruiken.
Pagina: 1