[MySQL] IF statement in query

Pagina: 1
Acties:

  • Speedener
  • Registratie: September 2000
  • Laatst online: 23-08 17:27
ik heb het volgende probleem, ik wil een paar dingen alleen maar opvragen als for_lastpostuser groter is dan 0 (zie tussen sterretjes wat ik dan wilt opvragen).
dus ik heb geprobeerd of IF werkte, werkte niet helaas. maar in de manual op mysql.com staat wel iets over IF maar ik begrijp niet wat ze bedoelen. Is hier een oplossing voor of moet ik het met 2 querys doen?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
    c.cat_name, c.cat_id, f.for_id, f.for_name, f.for_desc, f.for_mods, f.for_topics, 
    f.for_posts, f.for_private, *UNIX_TIMESTAMP(f.for_lastposttime) as lastposttime, 
    u.user_id, u.user_name*
FROM
    f_catagories as c, f_forums as f, f_users as u
WHERE
    f.for_cat_id = c.cat_id
AND 
    f.for_minposts <= '" . $user['posts'] . "'
AND
    IF(f.for_lastpostuser > 0)
        u.user_id = f.for_lastpostuser
ORDER BY 
    c.cat_order ASC, f.for_order ASC

[ Voor 16% gewijzigd door Speedener op 03-12-2002 11:18 . Reden: iets vergeten ]


  • whoami
  • Registratie: December 2000
  • Nu online
Jij past die IF hier volgens mij totaal verkeerd toe.
Jij wilt je sql-statement zelf aanpassen adhv die if. Een IF kan je gebruiken als je de parameters wilt afhankelijk maken van een bepaalde voorwaarde, maar je kan de structuur van je sql-statement daar niet afhankelijk van maken.

https://fgheysels.github.io/


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Waarschijnlijk doe je het op deze manier, omdat wanneer je het zonder IF doet, alleen de rows krijgt met een vermelding in de user table.

Als dat zo is, dan kan je het beter met een outer-join oplossen
dus, ga daar maar eens naar op zoek ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Speedener
  • Registratie: September 2000
  • Laatst online: 23-08 17:27
thomaske schreef op 03 december 2002 @ 11:19:
Waarschijnlijk doe je het op deze manier, omdat wanneer je het zonder IF doet, alleen de rows krijgt met een vermelding in de user table.

Als dat zo is, dan kan je het beter met een outer-join oplossen
dus, ga daar maar eens naar op zoek ;)
jah dat klopt, als er dan geen user is met dat id laat ie hem niet zien...

ok outerjoin "on my way" :+

JEUJ HET WERKT :] :>

[ Voor 5% gewijzigd door Speedener op 03-12-2002 11:26 . Reden: ff feest vieren ]