Last record inserted from a group in mysql

Pagina: 1
Acties:

  • ingmdijkstra
  • Registratie: November 2005
  • Laatst online: 14-09-2023
Ik ben druk bezig met een programma voor het bijhouden van gebruikte woorden en de opgevraagde info. Nu is mijn probleem dat ik uit de tabel Keywordinfo de laatste ingevoerde record wil hebben van deze keyword.
Keywordinfo:
KeywordinfoIDKeywordID
1A
2A
3B
4E
5C
6A
7D
8B
9C
10E
11F

Nu leek mij dit niet het grootste probleem want als je een group by doet op keywordid dan krijg je ook de eerste records hiervan.
Hoe moeilijk is het dan om de laatste ingevoerd record van deze keywordID op halen. Oftwel als je op B zoekt dan wil ik record 8 terug krijgen. Ik wil alleen een lijst hebben van alle KeywordID's met hun laatst ingevoerd record.
A-6
B-8
C-9
D-7
E-10
F-11
Kan iemand mij hierbij helpen

  • VisionMaster
  • Registratie: Juni 2001
  • Laatst online: 17-03 00:12

VisionMaster

Security!

code:
1
select max(KeywordinfoID) from Keywordinfo where KeywordID = 'B';

:?

Mits je het bestaan niet wist van de functie "max" zou ik zeggen dat dit wel erg basic.

[ Voor 80% gewijzigd door VisionMaster op 17-11-2005 10:44 ]

I've visited the Mothership @ Cupertino


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je moet group by in combinatie met MAX() gebruiken.

Hoe werkt dat GROUP BY nu eigenlijk?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

/laat

[ Voor 97% gewijzigd door justmental op 17-11-2005 10:45 ]

Who is John Galt?


  • ingmdijkstra
  • Registratie: November 2005
  • Laatst online: 14-09-2023
Nou wil ik graag een lijst hebben. Wat ik vergeten te vertellen ben is dat mijn table meerdere velden kent
b]Keywordinfo:[/b]
KeywordinfoIDKeywordIDZoekaantal
1A99
2A11
3B43
4E85
5C123
6A67
7D145
8B47
9C55
10E80
11F61


Nu gaat het mij eigenlijk om de laats ingevoerde zoekaantal

Visionmaster als je mijn vraag bekijkt zie je dat wat jij geeft niet het antwoord is.
En ja max ken ik wel werk al tijden met mysql maar ben vandaag een beetje off denk ik.

[ Voor 10% gewijzigd door ingmdijkstra op 17-11-2005 10:52 ]


  • VisionMaster
  • Registratie: Juni 2001
  • Laatst online: 17-03 00:12

VisionMaster

Security!

@TS: Check de link en je ziet dat mijn oplossing niet helemaal goed zou werken en hopelijk ook waarom :)

I've visited the Mothership @ Cupertino


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Dat vraagt om een andere oplossing.
Als je een oude mysql hebt: http://dev.mysql.com/doc/...mum-column-group-row.html
Anders kun je een subquery op deze manier gebruiken:
code:
1
2
3
...
where a.datum = (select max(datum)
...

Who is John Galt?


  • ingmdijkstra
  • Registratie: November 2005
  • Laatst online: 14-09-2023
Select * from Keyword where KeywordinfoID = max(KeywordinfoID);
Geeft mogelijk alleen de laatste record terug of error ;-).
Select * from Keyword Group by KeywordID having KeywordinfoID = max(KeywordinfoID);
Geeft alleen het eerste record van de group by terug omdat de having pas na de group by komt.

Waarom moet het altijd zo moeilijk als het makkelijker zou kunnen.
Ben dus nog met een oude mysql 4.0.15 bezig. :'(

[ Voor 7% gewijzigd door ingmdijkstra op 17-11-2005 11:00 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
sorry verkeerd gelezen.

iets met

where KeywordinfoID= (select max(KeywordinfoID))

is idd de goede oplossing lijkt me

select Zoekaantal
from Keywordinfo
where KeywordID = 'B'
order by KeywordinfoID desc
limit 0, 1

zou denk ook een oplossing kunnen zijn aangezien je in jouw versie van mysql geen subqueries kan gebruiken.

[ Voor 123% gewijzigd door Woy op 17-11-2005 11:16 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • ingmdijkstra
  • Registratie: November 2005
  • Laatst online: 14-09-2023
Jammer genoeg kan ik geen subselects uitvoeren met deze versie van mysql kan volgens mij pas in versie 4.1. Ik kan niet niet definieren welke KeywordID ik wil hebben. Moet gewoon de voledige lijst hebben.

[ Voor 32% gewijzigd door ingmdijkstra op 17-11-2005 11:18 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
ingmdijkstra schreef op donderdag 17 november 2005 @ 11:16:
Jammer genoeg kan ik geen subselects uitvoeren met deze versie van mysql kan volgens mij pas in versie 4.1
Ja daar dacht ik ook aan. Zie mijn edit. Dat zou denk ook moeten werken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • ingmdijkstra
  • Registratie: November 2005
  • Laatst online: 14-09-2023
Kan dus niet definieren welke KeywordID ik wil hebben. Als ik deze lijst heb dan pas kan ik hem koppelen met een andere table

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Hoe bedoel je kan niet definieren welke KeywordID je wilt hebben? Dat kan je toch gewoon in de where clause doen?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • ingmdijkstra
  • Registratie: November 2005
  • Laatst online: 14-09-2023
Ik koppel de tabel Keywordinfo met Keyword en dat zou ik graag in een keer doen. Ik vind het persoonnlijk raar dat het wel mogelijk is om de eerste row terug te krijgen na een group by actie maar niet de laatste dmv een group by actie. Wat ik dus op wil vragen is het laatste Zoekaantal van alle woorden.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
dat kan toch ook gewoon
SQL:
1
2
3
4
5
6
7
SELECT ki.Zoekaantal, k.watjewil
FROM Keywordinfo ki
INNER JOIN Keyword k
ON k.KeywordID = ki.KeywordID
WHERE ki.KeywordID = 'B'
ORDER BY ki.KeywordinfoID DESC
LIMIT 0, 1

[ Voor 6% gewijzigd door Woy op 17-11-2005 14:35 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1