[(My)SQL] query die ik niet vind

Pagina: 1
Acties:

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 14:59
kan iemand me helpen met het volgende: ?
vlug een schets.

ik heb een table met volgende kolommen:

teamids / timestamp / data

nu in teamids zitten teamids die MEERDERE maals kunne voorkomen, maar met een verschillende timestamp (data zal normaal ook verschillend zijn)

dus ik kan hebben met pseudo waarden:

1 / 13u / eten
1 / 14u /afwassen
1/ 23u / slapen
2 /14u / eten
2 / 20u / stoeien
3 /20u / avond eten

enzovoort, nu wil ik via 1 select de data hebben van alle verschillende teamids die het eerst voorkomen, dus ge-ordend op timestamp

dus elk team mag maar 1 keer voorkomen met de data geselcteerd van wat het eerst voorkomt.

het aantal teams kan ik "eventueel" te weten komen via andere table, maar kheb het liever in 1 query zonder nog es de database aan te spreken


ik vind het niet :( iemand anders misschien ?

"Live as if you were to die tomorrow. Learn as if you were to live forever"


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

thomaske

» » » » » »

MYSQL-BYBEL

zoeken naar distinct en group by

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


  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 14:59
denk je dat ik die nog niet bekeken heb ? nee het probleem lijkt makkelijker dan het is hoor

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Mocht je jouw probleem nu eens wat duidelijker uitleggen, dan kunnen we je misschien vlugger helpen...

Je spreekt over een table met teams, plots sleep je er nog een andere table bij ...

Kijk toch nog maar eens naar de tip van thomaske, want ik denk dat je die dingen nog niet genoeg bekeken hebt. Kijk eens op GROUP BY en MIN() en MAX().

Voor de rest mag je wel wat vriendelijker omgaan met de mensen die je hulp aanbieden.

https://fgheysels.github.io/


Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
select distinct 
        t1.teamId,
        t2.timestamp,
        t2.data 
from 
        testDataTable t1,
        testDataTable t2 
where 
        t2.teamId=t1.teamId 
group by 
        t1.teamId 
order by 
        t2.timestamp asc;

tada

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 14:59
Field Type Null Key Default Extra
w_kid int(5) PRI NULL auto_increment
teamid int(3) YES NULL
timestamp int(11) YES NULL
thuis enum('yes','no') YES NULL
tegenstander varchar(60) YES NULL
soort enum('comp','oef','beker') YES NULL


dit is men table , ik heb maar 1 table

"Live as if you were to die tomorrow. Learn as if you were to live forever"


Verwijderd

select t1.teamids
, t1timestamp
, t1.data
from table_stamp t1
where t1.timestap=(select min(timestap) from table_stamp where t1.teamids=teamids)


Dit selecteert de teamids met het vroegste tijdstempel(?).

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Behalve dat mysql geen subselects kan :)

"dit is men table , ik heb maar 1 table"
Had je al es goed naar woeitje's oplossing gekeken? :P

Verwijderd

Sorry ik had wat typefoutjes gemaakt.

Hier is de betere versie.

select t1.teamids
, t1.timestamp
, t1.data
from table_stamp t1
where t1.timestap=(select min(timestamp) from table_stamp where t1.teamids=teamids)

Verwijderd

Verwijderd schreef op 13 september 2002 @ 12:23:
select t1.teamids
, t1timestamp
, t1.data
from table_stamp t1
where t1.timestap=(select min(timestap) from table_stamp where t1.teamids=teamids)


Dit selecteert de teamids met het vroegste tijdstempel(?).
het ging nog altijd wel over mysql en die doet geen subselects 8)7

mijn query werkt........ die gebruikt ook maar 1 table, maar 2 aliassen naar die table..... test nou maar :P

Verwijderd

ACM schreef op 13 september 2002 @ 12:25:
Behalve dat mysql geen subselects kan :)

"dit is men table , ik heb maar 1 table"
Had je al es goed naar woeitje's oplossing gekeken? :P
Ja, dat heb ik bekeken: ik had begrepen dat alleen het record met het VROEGSTE timestamp moest worden afgdrukt, die oplossing van woeitje geeft per teamid alle records, alleen gesorteerd op timestamp en dan de vroegste bovenaan.

Als subselects niet werken in mysql dan gaat mijn oplossing ook niet op. Ik gebruik Oracle en daar werkt het wel.

Verwijderd

Verwijderd schreef op 13 september 2002 @ 12:31:
[...]


Ja, dat heb ik bekeken: ik had begrepen dat alleen het record met het VROEGSTE timestamp moest worden afgdrukt, die oplossing van woeitje geeft per teamid alle records, alleen gesorteerd op timestamp en dan de vroegste bovenaan.

Als subselects niet werken in mysql dan gaat mijn oplossing ook niet op. Ik gebruik Oracle en daar werkt het wel.
ik had alleen dat stukje over subselects tegen jou.

Mijn query werkt wel hoor, getest op mysql met test tabel met test data.

hij groepeert namelijk op het ID met de vroegste eerst. (dat was toch de bedoeling)
zoiets krijg je dan:
1 1u eten
3 3u drinken
5 2u slapen

(zomaar verzonnen)
Pagina: 1