Hoogste waarde verkijgen van een joined table

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bastiaan

Bastiaan

18/11/2008 13:45:00
Quote Anchor link
Hallo allemaal,

ik zit met een klein probleempje, op het moment ben ik bezig met een query waarin twee tabellen nodig zijn;

tabel1: FILE
tabel2: TRANSACTIONS

Nu wil ik een lijst krijgen met alle filenames en de account die het laatse een file heeft geupdate;

file.name - transactions.account

Wat ik nu dus heb is het volgende;

SELECT f.name, max(t.date), t.account
FROM file AS f JOIN transactions AS t ON f.id=t.f_id
GROUP BY f.id

Hieruit rolt dus een willekeurige account terwijl je zou verwachten dat het account gepakt wordt uit de rij waar ook max(t.date) vandaan komt.
Ook heb ik het volgende geprobeerd, maar dat lijkt ook niet helemaal goed te gaan, terwijl je wel zou verwachten dat dat goed moet gaan;

SELECT f.name, max(t.date), if(max(t.date)=t.date,t.account)
FROM file AS f JOIN transactions AS t ON f.id=t.f_id
GROUP BY f.id

Mis ik nu iets, maak ik een denkfout, of zit deze functionaliteit niet in MySQL?
 
PHP hulp

PHP hulp

04/12/2024 19:48:47
 
Bastiaan

Bastiaan

19/11/2008 16:33:00
Quote Anchor link
Kan niemand hier antwoord op geven??
 
Barman V

Barman V

19/11/2008 16:55:00
Quote Anchor link
Deze functionaliteit zit volgens mij inderdaad niet in mysql.

Je kan dit dmv een subquery oplossen. Probeer dit eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
SELECT f.name, t.account, (
  SELECT max(date)
  FROM transactions t_sub
  WHERE f.id=t_sub.f_id
) AS max_date
FROM file AS f JOIN transactions AS t ON f.id=t.f_id
GROUP BY f.id
?>


Ik hoop dat dit je verder helpt
Gewijzigd op 01/01/1970 01:00:00 door Barman V
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.