Toon posts:

MySQL, fout in WHERE-clause

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik probeer een query uit te voeren op de volgende manier:

PHP:
1
SELECT * FROM nieuws WHERE categorie = 'Nieuws' OR 'Wedstrijdverslag' OR 'Interview' OR 'Voorbeschouwing' ORDER BY tijd DESC LIMIT 0, 1


Zoals je ziet wil ik alle resultaten hebben die voldoen aan de where-clause. Nu haalt hij de boel keurig op, maar worden de opgehaalde gegevens niet goed gesorteerd. Hij pakt het eerste resultaat uit de categorie nieuws, terwijl hij wedstrijdverslag, interview en voorbeschouwing ook mee moet nemen. Uit DIE resultaten moet hij de rij met de laatste tijd weergeven. De tijd is geparsed tot een timestamp, dus de sorteer-functie zelf is wel goed.

Ik vraag me af of de manier met de OR, OR, OR wel werkt. Heeft iemand enig idee hoe ik dit kan verhelpen?

Alvast bedankt

  • GlowMouse
  • Registratie: November 2002
  • Niet online
OR categorie='wedstrijdverslag' werkt wel (ipv gewoon OR 'wedstrijdverslag'). Maar mooier zou zijn: WHERE categorie IN('Nieuws', 'blah', 'etc').
Hij pakt het eerste resultaat uit de categorie nieuws, terwijl hij wedstrijdverslag, interview en voorbeschouwing ook mee moet nemen. Uit DIE resultaten moet hij de rij met de laatste tijd weergeven.
Bedoel je nou dat je van iedere categorie het laatste nieuwtje wilt hebben?

[ Voor 60% gewijzigd door GlowMouse op 02-07-2007 22:12 ]


  • Kwastie
  • Registratie: April 2005
  • Laatst online: 21:03

Kwastie

Awesomeness

OR gaat niet werken, ff zoeken wat wel gaat werken 8)

Als ik het goed lees wil je dit: een systeem waar je nieuws instaat die gesorteerd moeten worden op tijd? of ook nog op categorie als je alleen op tijd wil is de dit de Oplossing:
PHP:
1
SELECT * FROM nieuws ORDER BY tijd DESC LIMIT 0, 1

of:
PHP:
1
SELECT * FROM nieuws WHERE categorie = 'Nieuws' OR categorie ='Wedstrijdverslag' OR categorie ='Interview' OR categorie ='Voorbeschouwing' ORDER BY tijd DESC LIMIT 0, 1

over de 2de ben ik niet helemaal zeker

[ Voor 97% gewijzigd door Kwastie op 02-07-2007 22:22 ]

When I get sad i stop being sad and be awesome instead


Verwijderd

Topicstarter
Bedoel je nou dat je van iedere categorie het laatste nieuwtje wilt hebben?
Nee, ik wil uiteindelijk maar 1 resultaat. En dat is het nieuwste bericht van al die 4 "categoriën", welke ik dus sorteer op tijd.

  • Jimbolino
  • Registratie: Januari 2001
  • Laatst online: 02:13

Jimbolino

troep.com

moet je met een OR je operatie niet herhalen?

dus:
categorie = nieuws OR categorie = interview etc...

volgens mij moet het verder wel werken.

The two basic principles of Windows system administration:
For minor problems, reboot
For major problems, reinstall


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 01-12 13:02

Dido

heforshe

Die OR's gaan dnek ik zo niet werken, nee. Hij zoekt records waar "categorie='nieuws'=TRUE', of waar "'Wedstrijdverslag'=TRUE". Dat laatste zal geen true opleveren, dat eerste wel.

Met IN ('foo', 'bar') gaat het wel werken :)

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Die OR's gaan dnek ik zo niet werken, nee. Hij zoekt records waar "categorie='nieuws'=TRUE', of waar "'Wedstrijdverslag'=TRUE". Dat laatste zal geen true opleveren, dat eerste wel.

Met IN ('foo', 'bar') gaat het wel werken
Bedankt, dit was inderdaad het probleem. Ik gebruik nu tevens IN, ipv OR. Dat werkt een stuk fijner!
Pagina: 1