Hallo,

Ik heb een probleempje en weet niet of die makkelijk op te lossen is. Op een website komen de berichten te staan uit de database. Er zijn twee soorten berichten die allebei in een aparte tabel staan met allebei aparte velden, ze hebben alleen id, datum en naam gelijk. Kan ik dan middels één query alle data opvragen uit beide tabellen en deze dan ordenen op datum? Dat ze zeg maar gemixed worden, gesorteerd op datum? Hieronder een duidelijk voorbeeld:


tabel 1: 
.---------------------------------------------. 
| id | reeksid | naam | volgorde |    datum   | 
|---------------------------------------------| 
| 1  | 3       | test | 5        | 22-03-2008 | 
| 2  | 2       | rood | 2        | 11-02-2008 | 
| 3  | 3       | geel | 4        | 04-02-2008 | 
| 4  | 4       | roze | 3        | 31-07-2008 | 
| 5  | 4       | cbkw | 1        | 16-11-2008 | 
.---------------------------------------------. 

tabel 2: 
.-----------------------------------. 
| id | naam | volgorde |    datum   | 
|-----------------------------------| 
| 1  | sick | 1        | 29-03-2008 | 
| 2  | blue | 2        | 31-01-2008 | 
| 3  | give | 5        | 15-08-2008 | 
| 4  | free | 4        | 03-01-2008 | 
| 5  | star | 3        | 21-05-2008 | 
.-----------------------------------. 

samengevoegde tabel op datum gesorteerd: 
.-----------------------------------. 
| id | naam | volgorde |    datum   | 
|-----------------------------------| 
| 4  | free | 4        | 03-01-2008 | 
| 2  | blue | 2        | 31-01-2008 | 
| 3  | geel | 4        | 04-02-2008 | 
| 2  | rood | 2        | 11-02-2008 | 
| 1  | test | 5        | 22-03-2008 | 
| 1  | sick | 1        | 29-03-2008 | 
| 5  | star | 3        | 21-05-2008 | 
| 4  | roze | 3        | 31-07-2008 | 
| 3  | give | 5        | 15-08-2008 | 
| 5  | cbkw | 1        | 16-11-2008 | 
.-----------------------------------. 


Weet iemand welke query ik hiervoor moet gebruiken?

Alvast bedankt,
Stijn
Je kunt met een hele vieze substring en wat concat-constructies een 'datum' aanmaken en daar dan op gaan sorteren in SQL. Het werkt, maar ga niet met EXPLAIN achterhalen wat de performance is, die is om te janken!

Met hooguit een 10-tal records in je tabellen kun je hier aan beginnen, anders zul je echt even de database moeten aanpassen. Waarschijnlijk niet een hele grote klus, maar wel eentje die vroeg of laat toch moet gebeuren.
Zoiets (niet getest):
SELECT CONCAT(SUBSTR(veld, 7, 4), '-', SUBSTR(veld, 4, 2), '-',SUBSTR(veld, 1, 2)) AS nieuwe_datum
Inderdaad, zoiets mag het worden. Dit is, gezien de performance, meer iets om de foute 'datum' te migreren naar een echte datum en dus voor een UPDATE-query. Dit in een SELECT uitvoeren en dan gaan sorteren, is geen goed plan, daar kan MySQL geen index bij gebruiken, die is er namelijk niet. Nu is MySQL daar toch al geen ster in, maar toch.

Reageren