[PHP / MySQL] Select vraag met NOT NULL

Pagina: 1
Acties:

  • Mr. Right 1
  • Registratie: Maart 2000
  • Laatst online: 02-08-2023

Mr. Right 1

Do I need to say more?

Topicstarter
Hier de tabel:

id, int(11), auto_increment
Score, int(10)
PlayerName, varchar(50)
email, varchar(50)

en hier de SELECT:

$query = "SELECT PlayerName, email, MAX(Score) AS Score FROM $table WHERE email <> 'mijn@mailadres.nl' OR email is not null GROUP BY email, PlayerName ORDER BY Score DESC LIMIT 100";

Ik wil dus als resultaat alles behalve:
1)als de records waarde "mijn@mailadres" hebben in de email-kolom
2)als er helemaal geen waarde in de email-kolom staat

Wat is er fout aan de query?

PS De query zelf werkt wel goed, maar in het resultaat staan nog steeds records die niet aan de WHERE functie voldoen. Heeft het iets met het type varchar van de kolom email te maken?

Verwijderd

Vervang OR door AND en zet haakjes om je voorwaarde.

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
helemaal geen waarde is volgens mij niet hetzelfde als NULL

but correct me if i'm wrong

Verwijderd

Wat dacht je dan dat NULL was?

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Heel simpel NULL ;)

Dus bij geen email -> INSERT hutsefluts VALUES('$score','$name',NULL);

  • Mr. Right 1
  • Registratie: Maart 2000
  • Laatst online: 02-08-2023

Mr. Right 1

Do I need to say more?

Topicstarter
Bedankt IJskoud, probleem opgelost!

Verwijderd

De discussie over NULL is interessant en al vaak gevoerd en zo te zien kan het geen kwaad als je je daar een beetje in verdiept, meneer Rob de Tuinman! Hier een topic waarin het laatst aan de orde is geweest: [topic=418099]

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
OK, mag ik even mijn standpunt verdedigen aan de hand van een voorbeeld mbt dit voorbeeld?

Er wordt dus door u gesteld dat NULL hetzelfde is als helemaal geen waarde in de email-kolom.

Stel nu dat de tabel als volgt gevuld wordt:

INSERT INTO tabel VALUES (1, 50, 'Pietje', 'ik@home.nl');
INSERT INTO tabel VALUES (2, 0, 'IJskoud', '');

volgorde: ID,Score,PlayerName,email

En ik voer de volgende query uit:
SELECT * FROM tabel WHERE email IS NULL;
dan zou ik dus als result krijgen de regel met PlayerName IJskoud.

Maar helaas....

Hierop baseer ik dus mijn stelling dat NULL en een lege waarde ongelijk zijn.

Verwijderd

Je hebt net een lege string ge-insert en wilt die vergelijken met Null. Dat levert inderdaad niets op, dat verrast me niet hoor.

Null is een indicator die je DBMS gebruikt om te controleren of een veld een waarde bevat. Null is niet een string of een getal en kan dus ook niet vergeleken worden met een lege string (string met lengte 0)(wat jij doet in je voorbeeld) of met 0.

Lees ff dat topic wat ik in m'n vorige reply gelinkt had, is echt interessant.

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Dat begrijp ik volkomen, maar wat ik in mijn voorbeeld aangeef, doet de topicstarter toch ook?

Er staat als eis:
2)als er helemaal geen waarde in de email-kolom staat
en er staat in de query:
... email is not null ...
Zo vat ik het op tenminste...
Pagina: 1