Toon posts:

[SQL] Postgres met If statements

Pagina: 1
Acties:

Verwijderd

Topicstarter
In mysql kan ik eenvoudig if statements verwerken in de sql query:

SELECT IF((s.time > 0, s.time, 99999999) as gtime etc...

Maar in postgres krijg ik dan een error:

Function 'iff(bool, int4)' does not exist Unable to identify a function that satisfies the given argument types You may need to add explicit typecasts


hierover staat niets in de manual van postgres en ik kan verder ook niets vinden hierover online. Iemand een idee?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik zie het idd ook niet in de docs, maar het kan toch ook gewoon met een CASE :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
'iff(bool, int4)' <-- f teveel?

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Verwijderd

Topicstarter
Zonder f teveel doet hij het ook niet

  • jochemd
  • Registratie: November 2000
  • Laatst online: 29-12-2025
hierover staat niets in de manual van postgres
Onzin, gewoon even zelf nadenken wat het probleem is in plaats van naar letterlijk de zelfde oplossing als in MySQL te zoeken. Dan kom je in de manual vanzelf via "The SQL Language" en "Functions and Operators" uit bij "Conditional Expressions".

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
"SELECT c.id, c.name,
        SUM(CASE WHEN s.time > 0 THEN s.time ELSE '99999999' END + (penalty*100) - (bonus*100)) as totaltime 
        FROM scoring s 
         LEFT JOIN cyclists c 
          ON s.cyclists_id = c.id 
         LEFT JOIN etappes e 
          ON s.etappes_id = e.id
        WHERE s.games_id=".$myGame->id." 
         AND e.volgnummer<=".$etappe->volgnummer." 
         AND s.time > 0
        GROUP BY c.id, c.name 
        ORDER BY totaltime 
        ASC LIMIT 25,0";


Zo doet hij het. Als je echter de case met as x gebruikt en vervolgens deze x gebruikt in de Sum dan werkt het niet.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

jochemd schreef op 04 mei 2004 @ 13:43:
[...]
Onzin, gewoon even zelf nadenken wat het probleem is in plaats van naar letterlijk de zelfde oplossing als in MySQL te zoeken. Dan kom je in de manual vanzelf via "The SQL Language" en "Functions and Operators" uit bij "Conditional Expressions".
En daar staat dus geen iff functie oid, zoals ik al zei, choeso jei :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1