Laatste gewijzigd record.
Kom er alleen niet uit.
Ik heb de velden post_time en post_edit_time. Als een bericht niet gewijzigd is, is post_edit_time gewoon 0.
Het zijn varchar velden met een unix timestamp (Tja, ik heb de DB niet gemaakt).
Hoe krijg ik nou de record waar of post_edit_time of post_time 't hoogst is?
veld > time()
Het zijn forumposts..
Als ik post_edit_time en post_time kan samenvoegen in één 'veld' dan kan ik makkelijk een MAX aanroepen.. maar zover ik weet kan dat niet..
Ben al beetje aan 't kijken naar de CONCAT functie, maar dat wil ook nog niet lukken..
Is het niet gewoon ORDER BY ......
Ik kan wel ORDER BY post_time_edit doen, maar als er dan bijvoorbeeld een nieuwe post komt, die niet gewijzigd word, dan zie ik nog steeds een oude datum..
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
Nouja, dat moet ik dus hebben, maar ik weet niet hoe...
Nils schreef op 02.10.2008 14:44:
kun je geen "als de post edit time ouder is dan de post time pak dan post time als edit time" achtige query maken.
@Nils: Daar zat ik dus ook net aan te denken. Dit moet volgens mij het probleem oplossen.
$result = mysql_fetch_assoc($query) etc etc
if $result['post_edit_time'] < $result['post_time']
{
doe bepaalde query
}
else
{
doe deze query
}
wellicht ietwat omslachtig maar zou moeten kunne toch
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
Dit heb ik nu
Code (php)
Hij sorteert ze nu bij post_time. Dus de laatste geposte krijg ik terug, maar de laatst gepost is niet altijd (eigenlijk nooit) de laatste gewijzigde..
Waarom is dat eigenlijk nooit de laatst gewijzigde, beetje raar, of zie ik hier iets over het hoofd.
Dus nog een keertje wat ik zeg maar nodig heb is; Record waar post_time of post_edit_time het hoogst is. De hoogste waarde uit de gehele tabel..
Het zal vast mogelijk zijn maar niet met mijn kennis ;)
Gewijzigd op 01/01/1970 01:00:00 door Nils Kuijpers
Ik heb hetzelfde als Nils. Net iets te weinig kennis van sql. Misschien moet je even geduld hebben en wachten totdat pgFrank weer online is. Die weet de juiste query te maken.
Iemand met SQL kennis die hier misschien een oplossing voor heeft?
Het zijn wel beide INT kolommen.
Dit werkt ook:
Code (php)
1
2
3
4
2
3
4
SELECT product_id, p_created, p_modified
FROM p_products
ORDER BY IF(p_modified,p_modified,p_created) DESC
LIMIT 10
FROM p_products
ORDER BY IF(p_modified,p_modified,p_created) DESC
LIMIT 10
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
Quote:
Het zijn varchar velden met een unix timestamp (Tja, ik heb de DB niet gemaakt).
Prutsers. Dat je hem niet hebt gemaakt, dat is 1 ding, je kunt hem wel weggooien: DROP DATABASE bagger;
Maar goed, met MAX() moet het toch kunnen?
Of wellicht zoiets:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT
CASE
WHEN MAX(kolomnaam) > MAX(kolom_2) THEN MAX(kolomnaam)
ELSE MAX(kolom_2)
END
AS hoogste_datum
FROM
tabelnaam;
CASE
WHEN MAX(kolomnaam) > MAX(kolom_2) THEN MAX(kolomnaam)
ELSE MAX(kolom_2)
END
AS hoogste_datum
FROM
tabelnaam;
Niet getest...
@Frank: Ik heb de max van tweevelden nodig en bij die CASE krijg ik deze error
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
SELECT *
FROM topics
CASE
WHEN MAX( topic_last_post_time ) > MAX( topic_time )
THEN MAX( topic_last_post_time )
ELSE MAX( topic_time )
END AS edit_time
WHERE forum_id =19;
MySQL retourneerde: Documentatie
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE
WHEN MAX(topic_last_post_time) > MAX(topic_time) THEN MAX(topic_last_p' at line 2
FROM topics
CASE
WHEN MAX( topic_last_post_time ) > MAX( topic_time )
THEN MAX( topic_last_post_time )
ELSE MAX( topic_time )
END AS edit_time
WHERE forum_id =19;
MySQL retourneerde: Documentatie
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE
WHEN MAX(topic_last_post_time) > MAX(topic_time) THEN MAX(topic_last_p' at line 2
Quote:
@Martijn: Die oplossingen werken niet.
Omdat het varchar velden zijn, denk ik.
Moet de CASE niet in de SELECT, net zoals pgFrank dat heeft gedaan.
Gerben Jacobs schreef op 05.10.2008 12:51:
@Martijn: Die oplossingen werken niet.
@Frank: Ik heb de max van tweevelden nodig en bij die CASE krijg ik deze error
@Frank: Ik heb de max van tweevelden nodig en bij die CASE krijg ik deze error
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
SELECT *
FROM topics
CASE
WHEN MAX( topic_last_post_time ) > MAX( topic_time )
THEN MAX( topic_last_post_time )
ELSE MAX( topic_time )
END AS edit_time
WHERE forum_id =19;
MySQL retourneerde: Documentatie
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE
WHEN MAX(topic_last_post_time) > MAX(topic_time) THEN MAX(topic_last_p' at line 2
FROM topics
CASE
WHEN MAX( topic_last_post_time ) > MAX( topic_time )
THEN MAX( topic_last_post_time )
ELSE MAX( topic_time )
END AS edit_time
WHERE forum_id =19;
MySQL retourneerde: Documentatie
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE
WHEN MAX(topic_last_post_time) > MAX(topic_time) THEN MAX(topic_last_p' at line 2
Je case hoort bij de velden die je wil selecteren dus: